#[inline]
pub unsafe fn CreateDataModelManager<P0>(debughost: P0) -> windows_core::Result<IDataModelManager>
where
    P0: windows_core::Param<IDebugHost>,
{
    windows_link::link!("dbgmodel.dll" "system" fn CreateDataModelManager(debughost : * mut core::ffi::c_void, manager : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        CreateDataModelManager(debughost.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[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::Param<windows_core::PCSTR>,
{
    windows_link::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);
    unsafe { DebugConnect(remoteoptions.param().abi(), interfaceid, interface as _).ok() }
}
#[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::Param<windows_core::PCWSTR>,
{
    windows_link::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);
    unsafe { DebugConnectWide(remoteoptions.param().abi(), interfaceid, interface as _).ok() }
}
#[inline]
pub unsafe fn DebugCreate<T>() -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_link::link!("dbgeng.dll" "system" fn DebugCreate(interfaceid : *const windows_core::GUID, interface : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { DebugCreate(&T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn DebugCreateEx<T>(dbgengoptions: u32) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_link::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__ = core::ptr::null_mut();
    unsafe { DebugCreateEx(&T::IID, dbgengoptions, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
pub const ADDRESS_TYPE_INDEX_NOT_FOUND: u32 = 11u32;
pub const Ambiguous: SignatureComparison = SignatureComparison(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ArrayDimension {
    pub LowerBound: i64,
    pub Length: u64,
    pub Stride: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for BUSDATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CANNOT_ALLOCATE_MEMORY: u32 = 9u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CKCL_DATA {
    pub NextLogEvent: *mut core::ffi::c_void,
    pub TAnalyzeString: windows_core::PSTR,
    pub TAnalyzeReturnType: TANALYZE_RETURN,
}
impl Default for CKCL_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CKCL_LISTHEAD {
    pub LogEventListHead: *mut CKCL_DATA,
    pub Heap: super::super::super::super::Foundation::HANDLE,
}
impl Default for CKCL_LISTHEAD {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CLSID_DebugFailureAnalysisBasic: windows_core::GUID = windows_core::GUID::from_u128(0xb74eed7f_1c7d_4c1b_959f_b96dd9175aa4);
pub const CLSID_DebugFailureAnalysisKernel: windows_core::GUID = windows_core::GUID::from_u128(0xee433078_64af_4c33_ab2f_ecad7f2a002d);
pub const CLSID_DebugFailureAnalysisTarget: windows_core::GUID = windows_core::GUID::from_u128(0xba9bfb05_ef75_4bbd_a745_a6b5529458b8);
pub const CLSID_DebugFailureAnalysisUser: windows_core::GUID = windows_core::GUID::from_u128(0xe60b0c93_cf49_4a32_8147_0362202dc56b);
pub const CLSID_DebugFailureAnalysisWinCE: windows_core::GUID = windows_core::GUID::from_u128(0x67d5e86f_f5e2_462a_9233_1bd616fcc7e8);
pub const CLSID_DebugFailureAnalysisXBox360: windows_core::GUID = windows_core::GUID::from_u128(0x901625bb_95f1_4318_ac80_9d733cee8c8b);
#[repr(C)]
#[derive(Clone, Copy)]
pub struct CPU_INFO {
    pub Type: u32,
    pub NumCPUs: u32,
    pub CurrentProc: u32,
    pub ProcInfo: [DEBUG_PROCESSOR_IDENTIFICATION_ALL; 2048],
    pub Mhz: u32,
}
impl Default for CPU_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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 Default for CPU_INFO_v1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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 Default for CPU_INFO_v2 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CROSS_PLATFORM_MAXIMUM_PROCESSORS: u32 = 2048u32;
pub const CURRENT_KD_SECONDARY_VERSION: u32 = 2u32;
pub const CallingConventionCDecl: CallingConventionKind = CallingConventionKind(1i32);
pub const CallingConventionFastCall: CallingConventionKind = CallingConventionKind(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CallingConventionKind(pub i32);
pub const CallingConventionStdCall: CallingConventionKind = CallingConventionKind(3i32);
pub const CallingConventionSysCall: CallingConventionKind = CallingConventionKind(4i32);
pub const CallingConventionThisCall: CallingConventionKind = CallingConventionKind(5i32);
pub const CallingConventionUnknown: CallingConventionKind = CallingConventionKind(0i32);
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DBGKD_DEBUG_DATA_HEADER32 {
    pub List: super::super::super::Kernel::LIST_ENTRY32,
    pub OwnerTag: u32,
    pub Size: u32,
}
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DBGKD_DEBUG_DATA_HEADER64 {
    pub List: super::super::super::Kernel::LIST_ENTRY64,
    pub OwnerTag: u32,
    pub Size: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for DBGKD_GET_VERSION64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DBGKD_MAJOR_BIG: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(2i32);
pub const DBGKD_MAJOR_CE: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(10i32);
pub const DBGKD_MAJOR_COUNT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(11i32);
pub const DBGKD_MAJOR_EFI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(5i32);
pub const DBGKD_MAJOR_EXDI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(3i32);
pub const DBGKD_MAJOR_HYPERVISOR: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(8i32);
pub const DBGKD_MAJOR_MIDORI: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(9i32);
pub const DBGKD_MAJOR_NT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(0i32);
pub const DBGKD_MAJOR_NTBD: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(4i32);
pub const DBGKD_MAJOR_SINGULARITY: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(7i32);
pub const DBGKD_MAJOR_TNT: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(6i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DBGKD_MAJOR_TYPES(pub i32);
pub const DBGKD_MAJOR_XBOX: DBGKD_MAJOR_TYPES = DBGKD_MAJOR_TYPES(1i32);
pub const DBGKD_SIMULATION_EXDI: i32 = 1i32;
pub const DBGKD_SIMULATION_NONE: i32 = 0i32;
pub const DBGKD_VERS_FLAG_DATA: u32 = 2u32;
pub const DBGKD_VERS_FLAG_HAL_IN_NTOS: u32 = 64u32;
pub const DBGKD_VERS_FLAG_HSS: u32 = 16u32;
pub const DBGKD_VERS_FLAG_MP: u32 = 1u32;
pub const DBGKD_VERS_FLAG_NOMM: u32 = 8u32;
pub const DBGKD_VERS_FLAG_PARTITIONS: u32 = 32u32;
pub const DBGKD_VERS_FLAG_PTR64: u32 = 4u32;
pub const DBG_DUMP_ADDRESS_AT_END: u32 = 131072u32;
pub const DBG_DUMP_ADDRESS_OF_FIELD: u32 = 65536u32;
pub const DBG_DUMP_ARRAY: u32 = 32768u32;
pub const DBG_DUMP_BLOCK_RECURSE: u32 = 2097152u32;
pub const DBG_DUMP_CALL_FOR_EACH: u32 = 8u32;
pub const DBG_DUMP_COMPACT_OUT: u32 = 8192u32;
pub const DBG_DUMP_COPY_TYPE_DATA: u32 = 262144u32;
pub const DBG_DUMP_FIELD_ARRAY: u32 = 16u32;
pub const DBG_DUMP_FIELD_CALL_BEFORE_PRINT: u32 = 1u32;
pub const DBG_DUMP_FIELD_COPY_FIELD_DATA: u32 = 32u32;
pub const DBG_DUMP_FIELD_DEFAULT_STRING: u32 = 65536u32;
pub const DBG_DUMP_FIELD_FULL_NAME: u32 = 8u32;
pub const DBG_DUMP_FIELD_GUID_STRING: u32 = 524288u32;
pub const DBG_DUMP_FIELD_MULTI_STRING: u32 = 262144u32;
pub const DBG_DUMP_FIELD_NO_CALLBACK_REQ: u32 = 2u32;
pub const DBG_DUMP_FIELD_NO_PRINT: u32 = 16384u32;
pub const DBG_DUMP_FIELD_RECUR_ON_THIS: u32 = 4u32;
pub const DBG_DUMP_FIELD_RETURN_ADDRESS: u32 = 4096u32;
pub const DBG_DUMP_FIELD_SIZE_IN_BITS: u32 = 8192u32;
pub const DBG_DUMP_FIELD_UTF32_STRING: u32 = 1048576u32;
pub const DBG_DUMP_FIELD_WCHAR_STRING: u32 = 131072u32;
pub const DBG_DUMP_FUNCTION_FORMAT: u32 = 1048576u32;
pub const DBG_DUMP_GET_SIZE_ONLY: u32 = 128u32;
pub const DBG_DUMP_LIST: u32 = 32u32;
pub const DBG_DUMP_MATCH_SIZE: u32 = 4194304u32;
pub const DBG_DUMP_NO_INDENT: u32 = 1u32;
pub const DBG_DUMP_NO_OFFSET: u32 = 2u32;
pub const DBG_DUMP_NO_PRINT: u32 = 64u32;
pub const DBG_DUMP_READ_PHYSICAL: u32 = 524288u32;
pub const DBG_DUMP_VERBOSE: u32 = 4u32;
pub const DBG_FRAME_DEFAULT: u32 = 0u32;
pub const DBG_FRAME_IGNORE_INLINE: u32 = 4294967295u32;
pub const DBG_RETURN_SUBTYPES: u32 = 0u32;
pub const DBG_RETURN_TYPE: u32 = 0u32;
pub const DBG_RETURN_TYPE_VALUES: u32 = 0u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: [i8; 100],
    pub SymName: [i8; 100],
}
impl Default for DBG_THREAD_ATTRIBUTES {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_ADDSYNTHMOD_DEFAULT: u32 = 0u32;
pub const DEBUG_ADDSYNTHMOD_ZEROBASE: u32 = 1u32;
pub const DEBUG_ADDSYNTHSYM_DEFAULT: u32 = 0u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: [i8; 32],
    pub Manufacturer: [i8; 64],
    pub Name: [i8; 64],
    pub Version: [i8; 64],
    pub Description: [i8; 64],
}
impl Default for DEBUG_ANALYSIS_PROCESSOR_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_ANY_ID: u32 = 4294967295u32;
pub const DEBUG_ASMOPT_DEFAULT: u32 = 0u32;
pub const DEBUG_ASMOPT_IGNORE_OUTPUT_WIDTH: u32 = 4u32;
pub const DEBUG_ASMOPT_NO_CODE_BYTES: u32 = 2u32;
pub const DEBUG_ASMOPT_SOURCE_LINE_NUMBER: u32 = 8u32;
pub const DEBUG_ASMOPT_VERBOSE: u32 = 1u32;
pub const DEBUG_ATTACH_DEFAULT: u32 = 0u32;
pub const DEBUG_ATTACH_EXDI_DRIVER: u32 = 2u32;
pub const DEBUG_ATTACH_EXISTING: u32 = 2u32;
pub const DEBUG_ATTACH_INSTALL_DRIVER: u32 = 4u32;
pub const DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK: u32 = 8u32;
pub const DEBUG_ATTACH_INVASIVE_RESUME_PROCESS: u32 = 16u32;
pub const DEBUG_ATTACH_KERNEL_CONNECTION: u32 = 0u32;
pub const DEBUG_ATTACH_LOCAL_KERNEL: u32 = 1u32;
pub const DEBUG_ATTACH_NONINVASIVE: u32 = 1u32;
pub const DEBUG_ATTACH_NONINVASIVE_ALLOW_PARTIAL: u32 = 32u32;
pub const DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND: u32 = 4u32;
pub const DEBUG_BREAKPOINT_ADDER_ONLY: u32 = 8u32;
pub const DEBUG_BREAKPOINT_CODE: u32 = 0u32;
pub const DEBUG_BREAKPOINT_DATA: u32 = 1u32;
pub const DEBUG_BREAKPOINT_DEFERRED: u32 = 2u32;
pub const DEBUG_BREAKPOINT_ENABLED: u32 = 4u32;
pub const DEBUG_BREAKPOINT_GO_ONLY: u32 = 1u32;
pub const DEBUG_BREAKPOINT_INLINE: u32 = 3u32;
pub const DEBUG_BREAKPOINT_ONE_SHOT: u32 = 16u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub const DEBUG_BREAKPOINT_TIME: u32 = 2u32;
pub const DEBUG_BREAK_EXECUTE: u32 = 4u32;
pub const DEBUG_BREAK_IO: u32 = 8u32;
pub const DEBUG_BREAK_READ: u32 = 1u32;
pub const DEBUG_BREAK_WRITE: u32 = 2u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_CACHED_SYMBOL_INFO {
    pub ModBase: u64,
    pub Arg1: u64,
    pub Arg2: u64,
    pub Id: u32,
    pub Arg3: u32,
}
pub const DEBUG_CDS_ALL: u32 = 4294967295u32;
pub const DEBUG_CDS_DATA: u32 = 2u32;
pub const DEBUG_CDS_REFRESH: u32 = 4u32;
pub const DEBUG_CDS_REFRESH_ADDBREAKPOINT: u32 = 4u32;
pub const DEBUG_CDS_REFRESH_EVALUATE: u32 = 1u32;
pub const DEBUG_CDS_REFRESH_EXECUTE: u32 = 2u32;
pub const DEBUG_CDS_REFRESH_EXECUTECOMMANDFILE: u32 = 3u32;
pub const DEBUG_CDS_REFRESH_INLINESTEP: u32 = 16u32;
pub const DEBUG_CDS_REFRESH_INLINESTEP_PSEUDO: u32 = 17u32;
pub const DEBUG_CDS_REFRESH_REMOVEBREAKPOINT: u32 = 5u32;
pub const DEBUG_CDS_REFRESH_SETSCOPE: u32 = 12u32;
pub const DEBUG_CDS_REFRESH_SETSCOPEFRAMEBYINDEX: u32 = 13u32;
pub const DEBUG_CDS_REFRESH_SETSCOPEFROMJITDEBUGINFO: u32 = 14u32;
pub const DEBUG_CDS_REFRESH_SETSCOPEFROMSTOREDEVENT: u32 = 15u32;
pub const DEBUG_CDS_REFRESH_SETVALUE: u32 = 10u32;
pub const DEBUG_CDS_REFRESH_SETVALUE2: u32 = 11u32;
pub const DEBUG_CDS_REFRESH_WRITEPHYSICAL: u32 = 8u32;
pub const DEBUG_CDS_REFRESH_WRITEPHYSICAL2: u32 = 9u32;
pub const DEBUG_CDS_REFRESH_WRITEVIRTUAL: u32 = 6u32;
pub const DEBUG_CDS_REFRESH_WRITEVIRTUALUNCACHED: u32 = 7u32;
pub const DEBUG_CDS_REGISTERS: u32 = 1u32;
pub const DEBUG_CES_ALL: u32 = 4294967295u32;
pub const DEBUG_CES_ASSEMBLY_OPTIONS: u32 = 4096u32;
pub const DEBUG_CES_BREAKPOINTS: u32 = 4u32;
pub const DEBUG_CES_CODE_LEVEL: u32 = 8u32;
pub const DEBUG_CES_CURRENT_THREAD: u32 = 1u32;
pub const DEBUG_CES_EFFECTIVE_PROCESSOR: u32 = 2u32;
pub const DEBUG_CES_ENGINE_OPTIONS: u32 = 32u32;
pub const DEBUG_CES_EVENT_FILTERS: u32 = 256u32;
pub const DEBUG_CES_EXECUTION_STATUS: u32 = 16u32;
pub const DEBUG_CES_EXPRESSION_SYNTAX: u32 = 8192u32;
pub const DEBUG_CES_EXTENSIONS: u32 = 1024u32;
pub const DEBUG_CES_LOG_FILE: u32 = 64u32;
pub const DEBUG_CES_PROCESS_OPTIONS: u32 = 512u32;
pub const DEBUG_CES_RADIX: u32 = 128u32;
pub const DEBUG_CES_SYSTEMS: u32 = 2048u32;
pub const DEBUG_CES_TEXT_REPLACEMENTS: u32 = 16384u32;
pub const DEBUG_CLASS_IMAGE_FILE: u32 = 3u32;
pub const DEBUG_CLASS_KERNEL: u32 = 1u32;
pub const DEBUG_CLASS_UNINITIALIZED: u32 = 0u32;
pub const DEBUG_CLASS_USER_WINDOWS: u32 = 2u32;
pub const DEBUG_CLIENT_CDB: u32 = 4u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_CLIENT_CONTEXT {
    pub cbSize: u32,
    pub eClient: u32,
}
pub const DEBUG_CLIENT_KD: u32 = 5u32;
pub const DEBUG_CLIENT_NTKD: u32 = 3u32;
pub const DEBUG_CLIENT_NTSD: u32 = 2u32;
pub const DEBUG_CLIENT_UNKNOWN: u32 = 0u32;
pub const DEBUG_CLIENT_VSINT: u32 = 1u32;
pub const DEBUG_CLIENT_WINDBG: u32 = 6u32;
pub const DEBUG_CLIENT_WINIDE: u32 = 7u32;
pub const DEBUG_CMDEX_ADD_EVENT_STRING: u32 = 1u32;
pub const DEBUG_CMDEX_INVALID: u32 = 0u32;
pub const DEBUG_CMDEX_RESET_EVENT_STRINGS: u32 = 2u32;
pub const DEBUG_COMMAND_EXCEPTION_ID: u32 = 3688893886u32;
pub const DEBUG_CONNECT_SESSION_DEFAULT: u32 = 0u32;
pub const DEBUG_CONNECT_SESSION_NO_ANNOUNCE: u32 = 2u32;
pub const DEBUG_CONNECT_SESSION_NO_VERSION: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_CPU_SPEED_INFO {
    pub SizeOfStruct: u32,
    pub CurrentSpeed: u32,
    pub RatedSpeed: u32,
    pub NameString: [u16; 256],
}
impl Default for DEBUG_CPU_SPEED_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_CREATE_PROCESS_OPTIONS {
    pub CreateFlags: u32,
    pub EngCreateFlags: u32,
    pub VerifierFlags: u32,
    pub Reserved: u32,
}
pub const DEBUG_CSS_ALL: u32 = 4294967295u32;
pub const DEBUG_CSS_COLLAPSE_CHILDREN: u32 = 64u32;
pub const DEBUG_CSS_LOADS: u32 = 1u32;
pub const DEBUG_CSS_PATHS: u32 = 8u32;
pub const DEBUG_CSS_SCOPE: u32 = 4u32;
pub const DEBUG_CSS_SYMBOL_OPTIONS: u32 = 16u32;
pub const DEBUG_CSS_TYPE_OPTIONS: u32 = 32u32;
pub const DEBUG_CSS_UNLOADS: u32 = 2u32;
pub const DEBUG_CURRENT_DEFAULT: u32 = 15u32;
pub const DEBUG_CURRENT_DISASM: u32 = 2u32;
pub const DEBUG_CURRENT_REGISTERS: u32 = 4u32;
pub const DEBUG_CURRENT_SOURCE_LINE: u32 = 8u32;
pub const DEBUG_CURRENT_SYMBOL: u32 = 1u32;
pub const DEBUG_DATA_BASE_TRANSLATION_VIRTUAL_OFFSET: u32 = 3u32;
pub const DEBUG_DATA_BreakpointWithStatusAddr: u32 = 32u32;
pub const DEBUG_DATA_CmNtCSDVersionAddr: u32 = 616u32;
pub const DEBUG_DATA_DumpAttributes: u32 = 100072u32;
pub const DEBUG_DATA_DumpFormatVersion: u32 = 100040u32;
pub const DEBUG_DATA_DumpMmStorage: u32 = 100064u32;
pub const DEBUG_DATA_DumpPowerState: u32 = 100056u32;
pub const DEBUG_DATA_DumpWriterStatus: u32 = 100032u32;
pub const DEBUG_DATA_DumpWriterVersion: u32 = 100048u32;
pub const DEBUG_DATA_EtwpDebuggerData: u32 = 816u32;
pub const DEBUG_DATA_ExpNumberOfPagedPoolsAddr: u32 = 112u32;
pub const DEBUG_DATA_ExpPagedPoolDescriptorAddr: u32 = 104u32;
pub const DEBUG_DATA_ExpSystemResourcesListAddr: u32 = 96u32;
pub const DEBUG_DATA_IopErrorLogListHeadAddr: u32 = 144u32;
pub const DEBUG_DATA_KPCR_OFFSET: u32 = 0u32;
pub const DEBUG_DATA_KPRCB_OFFSET: u32 = 1u32;
pub const DEBUG_DATA_KTHREAD_OFFSET: u32 = 2u32;
pub const DEBUG_DATA_KdPrintBufferSizeAddr: u32 = 720u32;
pub const DEBUG_DATA_KdPrintCircularBufferAddr: u32 = 480u32;
pub const DEBUG_DATA_KdPrintCircularBufferEndAddr: u32 = 488u32;
pub const DEBUG_DATA_KdPrintCircularBufferPtrAddr: u32 = 712u32;
pub const DEBUG_DATA_KdPrintRolloverCountAddr: u32 = 504u32;
pub const DEBUG_DATA_KdPrintWritePointerAddr: u32 = 496u32;
pub const DEBUG_DATA_KeBugCheckCallbackListHeadAddr: u32 = 128u32;
pub const DEBUG_DATA_KeTimeIncrementAddr: u32 = 120u32;
pub const DEBUG_DATA_KeUserCallbackDispatcherAddr: u32 = 64u32;
pub const DEBUG_DATA_KernBase: u32 = 24u32;
pub const DEBUG_DATA_KernelVerifierAddr: u32 = 576u32;
pub const DEBUG_DATA_KiBugcheckDataAddr: u32 = 136u32;
pub const DEBUG_DATA_KiCallUserModeAddr: u32 = 56u32;
pub const DEBUG_DATA_KiNormalSystemCall: u32 = 528u32;
pub const DEBUG_DATA_KiProcessorBlockAddr: u32 = 536u32;
pub const DEBUG_DATA_MmAllocatedNonPagedPoolAddr: u32 = 592u32;
pub const DEBUG_DATA_MmAvailablePagesAddr: u32 = 424u32;
pub const DEBUG_DATA_MmBadPagesDetected: u32 = 800u32;
pub const DEBUG_DATA_MmDriverCommitAddr: u32 = 352u32;
pub const DEBUG_DATA_MmExtendedCommitAddr: u32 = 376u32;
pub const DEBUG_DATA_MmFreePageListHeadAddr: u32 = 392u32;
pub const DEBUG_DATA_MmHighestPhysicalPageAddr: u32 = 240u32;
pub const DEBUG_DATA_MmHighestUserAddressAddr: u32 = 456u32;
pub const DEBUG_DATA_MmLastUnloadedDriverAddr: u32 = 552u32;
pub const DEBUG_DATA_MmLoadedUserImageListAddr: u32 = 512u32;
pub const DEBUG_DATA_MmLowestPhysicalPageAddr: u32 = 232u32;
pub const DEBUG_DATA_MmMaximumNonPagedPoolInBytesAddr: u32 = 256u32;
pub const DEBUG_DATA_MmModifiedNoWritePageListHeadAddr: u32 = 416u32;
pub const DEBUG_DATA_MmModifiedPageListHeadAddr: u32 = 408u32;
pub const DEBUG_DATA_MmNonPagedPoolEndAddr: u32 = 280u32;
pub const DEBUG_DATA_MmNonPagedPoolStartAddr: u32 = 272u32;
pub const DEBUG_DATA_MmNonPagedSystemStartAddr: u32 = 264u32;
pub const DEBUG_DATA_MmNumberOfPagingFilesAddr: u32 = 224u32;
pub const DEBUG_DATA_MmNumberOfPhysicalPagesAddr: u32 = 248u32;
pub const DEBUG_DATA_MmPageSize: u32 = 312u32;
pub const DEBUG_DATA_MmPagedPoolCommitAddr: u32 = 368u32;
pub const DEBUG_DATA_MmPagedPoolEndAddr: u32 = 296u32;
pub const DEBUG_DATA_MmPagedPoolInformationAddr: u32 = 304u32;
pub const DEBUG_DATA_MmPagedPoolStartAddr: u32 = 288u32;
pub const DEBUG_DATA_MmPeakCommitmentAddr: u32 = 600u32;
pub const DEBUG_DATA_MmPfnDatabaseAddr: u32 = 192u32;
pub const DEBUG_DATA_MmPhysicalMemoryBlockAddr: u32 = 624u32;
pub const DEBUG_DATA_MmProcessCommitAddr: u32 = 360u32;
pub const DEBUG_DATA_MmResidentAvailablePagesAddr: u32 = 432u32;
pub const DEBUG_DATA_MmSessionBase: u32 = 632u32;
pub const DEBUG_DATA_MmSessionSize: u32 = 640u32;
pub const DEBUG_DATA_MmSharedCommitAddr: u32 = 344u32;
pub const DEBUG_DATA_MmSizeOfPagedPoolInBytesAddr: u32 = 320u32;
pub const DEBUG_DATA_MmSpecialPoolTagAddr: u32 = 568u32;
pub const DEBUG_DATA_MmStandbyPageListHeadAddr: u32 = 400u32;
pub const DEBUG_DATA_MmSubsectionBaseAddr: u32 = 216u32;
pub const DEBUG_DATA_MmSystemCacheEndAddr: u32 = 176u32;
pub const DEBUG_DATA_MmSystemCacheStartAddr: u32 = 168u32;
pub const DEBUG_DATA_MmSystemCacheWsAddr: u32 = 184u32;
pub const DEBUG_DATA_MmSystemParentTablePage: u32 = 648u32;
pub const DEBUG_DATA_MmSystemPtesEndAddr: u32 = 208u32;
pub const DEBUG_DATA_MmSystemPtesStartAddr: u32 = 200u32;
pub const DEBUG_DATA_MmSystemRangeStartAddr: u32 = 464u32;
pub const DEBUG_DATA_MmTotalCommitLimitAddr: u32 = 328u32;
pub const DEBUG_DATA_MmTotalCommitLimitMaximumAddr: u32 = 608u32;
pub const DEBUG_DATA_MmTotalCommittedPagesAddr: u32 = 336u32;
pub const DEBUG_DATA_MmTriageActionTakenAddr: u32 = 560u32;
pub const DEBUG_DATA_MmUnloadedDriversAddr: u32 = 544u32;
pub const DEBUG_DATA_MmUserProbeAddressAddr: u32 = 472u32;
pub const DEBUG_DATA_MmVerifierDataAddr: u32 = 584u32;
pub const DEBUG_DATA_MmVirtualTranslationBase: u32 = 656u32;
pub const DEBUG_DATA_MmZeroedPageListHeadAddr: u32 = 384u32;
pub const DEBUG_DATA_NonPagedPoolDescriptorAddr: u32 = 448u32;
pub const DEBUG_DATA_NtBuildLabAddr: u32 = 520u32;
pub const DEBUG_DATA_ObpRootDirectoryObjectAddr: u32 = 152u32;
pub const DEBUG_DATA_ObpTypeObjectTypeAddr: u32 = 160u32;
pub const DEBUG_DATA_OffsetEprocessDirectoryTableBase: u32 = 686u32;
pub const DEBUG_DATA_OffsetEprocessParentCID: u32 = 684u32;
pub const DEBUG_DATA_OffsetEprocessPeb: u32 = 682u32;
pub const DEBUG_DATA_OffsetKThreadApcProcess: u32 = 672u32;
pub const DEBUG_DATA_OffsetKThreadBStore: u32 = 676u32;
pub const DEBUG_DATA_OffsetKThreadBStoreLimit: u32 = 678u32;
pub const DEBUG_DATA_OffsetKThreadInitialStack: u32 = 670u32;
pub const DEBUG_DATA_OffsetKThreadKernelStack: u32 = 668u32;
pub const DEBUG_DATA_OffsetKThreadNextProcessor: u32 = 664u32;
pub const DEBUG_DATA_OffsetKThreadState: u32 = 674u32;
pub const DEBUG_DATA_OffsetKThreadTeb: u32 = 666u32;
pub const DEBUG_DATA_OffsetPrcbCpuType: u32 = 696u32;
pub const DEBUG_DATA_OffsetPrcbCurrentThread: u32 = 692u32;
pub const DEBUG_DATA_OffsetPrcbDpcRoutine: u32 = 690u32;
pub const DEBUG_DATA_OffsetPrcbMhz: u32 = 694u32;
pub const DEBUG_DATA_OffsetPrcbNumber: u32 = 702u32;
pub const DEBUG_DATA_OffsetPrcbProcessorState: u32 = 700u32;
pub const DEBUG_DATA_OffsetPrcbVendorString: u32 = 698u32;
pub const DEBUG_DATA_PROCESSOR_IDENTIFICATION: u32 = 4u32;
pub const DEBUG_DATA_PROCESSOR_SPEED: u32 = 5u32;
pub const DEBUG_DATA_PaeEnabled: u32 = 100000u32;
pub const DEBUG_DATA_PagingLevels: u32 = 100080u32;
pub const DEBUG_DATA_PoolTrackTableAddr: u32 = 440u32;
pub const DEBUG_DATA_ProductType: u32 = 100016u32;
pub const DEBUG_DATA_PsActiveProcessHeadAddr: u32 = 80u32;
pub const DEBUG_DATA_PsLoadedModuleListAddr: u32 = 72u32;
pub const DEBUG_DATA_PspCidTableAddr: u32 = 88u32;
pub const DEBUG_DATA_PteBase: u32 = 864u32;
pub const DEBUG_DATA_SPACE_BUS_DATA: u32 = 5u32;
pub const DEBUG_DATA_SPACE_CONTROL: u32 = 2u32;
pub const DEBUG_DATA_SPACE_COUNT: u32 = 7u32;
pub const DEBUG_DATA_SPACE_DEBUGGER_DATA: u32 = 6u32;
pub const DEBUG_DATA_SPACE_IO: u32 = 3u32;
pub const DEBUG_DATA_SPACE_MSR: u32 = 4u32;
pub const DEBUG_DATA_SPACE_PHYSICAL: u32 = 1u32;
pub const DEBUG_DATA_SPACE_VIRTUAL: u32 = 0u32;
pub const DEBUG_DATA_SavedContextAddr: u32 = 40u32;
pub const DEBUG_DATA_SharedUserData: u32 = 100008u32;
pub const DEBUG_DATA_SizeEProcess: u32 = 680u32;
pub const DEBUG_DATA_SizeEThread: u32 = 704u32;
pub const DEBUG_DATA_SizePrcb: u32 = 688u32;
pub const DEBUG_DATA_SuiteMask: u32 = 100024u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_DECODE_ERROR {
    pub SizeOfStruct: u32,
    pub Code: u32,
    pub TreatAsStatus: windows_core::BOOL,
    pub Source: [i8; 64],
    pub Message: [i8; 260],
}
impl Default for DEBUG_DECODE_ERROR {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_DEVICE_OBJECT_INFO {
    pub SizeOfStruct: u32,
    pub DevObjAddress: u64,
    pub ReferenceCount: u32,
    pub QBusy: windows_core::BOOL,
    pub DriverObject: u64,
    pub CurrentIrp: u64,
    pub DevExtension: u64,
    pub DevObjExtension: u64,
}
pub const DEBUG_DISASM_EFFECTIVE_ADDRESS: u32 = 1u32;
pub const DEBUG_DISASM_MATCHING_SYMBOLS: u32 = 2u32;
pub const DEBUG_DISASM_SOURCE_FILE_NAME: u32 = 8u32;
pub const DEBUG_DISASM_SOURCE_LINE_NUMBER: u32 = 4u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_DRIVER_OBJECT_INFO_0 {
    pub Length: u16,
    pub MaximumLength: u16,
    pub Buffer: u64,
}
pub const DEBUG_DUMP_ACTIVE: u32 = 1030u32;
pub const DEBUG_DUMP_DEFAULT: u32 = 1025u32;
pub const DEBUG_DUMP_FILE_BASE: u32 = 4294967295u32;
pub const DEBUG_DUMP_FILE_LOAD_FAILED_INDEX: u32 = 4294967295u32;
pub const DEBUG_DUMP_FILE_ORIGINAL_CAB_INDEX: u32 = 4294967294u32;
pub const DEBUG_DUMP_FILE_PAGE_FILE_DUMP: u32 = 0u32;
pub const DEBUG_DUMP_FULL: u32 = 1026u32;
pub const DEBUG_DUMP_IMAGE_FILE: u32 = 1027u32;
pub const DEBUG_DUMP_SMALL: u32 = 1024u32;
pub const DEBUG_DUMP_TRACE_LOG: u32 = 1028u32;
pub const DEBUG_DUMP_WINDOWS_CE: u32 = 1029u32;
pub const DEBUG_ECREATE_PROCESS_DEFAULT: u32 = 0u32;
pub const DEBUG_ECREATE_PROCESS_INHERIT_HANDLES: u32 = 1u32;
pub const DEBUG_ECREATE_PROCESS_USE_IMPLICIT_COMMAND_LINE: u32 = 4u32;
pub const DEBUG_ECREATE_PROCESS_USE_VERIFIER_FLAGS: u32 = 2u32;
pub const DEBUG_EINDEX_FROM_CURRENT: u32 = 2u32;
pub const DEBUG_EINDEX_FROM_END: u32 = 1u32;
pub const DEBUG_EINDEX_FROM_START: u32 = 0u32;
pub const DEBUG_EINDEX_NAME: u32 = 0u32;
pub const DEBUG_END_ACTIVE_DETACH: u32 = 2u32;
pub const DEBUG_END_ACTIVE_TERMINATE: u32 = 1u32;
pub const DEBUG_END_DISCONNECT: u32 = 4u32;
pub const DEBUG_END_PASSIVE: u32 = 0u32;
pub const DEBUG_END_REENTRANT: u32 = 3u32;
pub const DEBUG_ENGOPT_ALL: u32 = 32505855u32;
pub const DEBUG_ENGOPT_ALLOW_NETWORK_PATHS: u32 = 4u32;
pub const DEBUG_ENGOPT_ALLOW_READ_ONLY_BREAKPOINTS: u32 = 1024u32;
pub const DEBUG_ENGOPT_DEBUGGING_SENSITIVE_DATA: u32 = 4194304u32;
pub const DEBUG_ENGOPT_DISABLESQM: u32 = 524288u32;
pub const DEBUG_ENGOPT_DISABLE_EXECUTION_COMMANDS: u32 = 65536u32;
pub const DEBUG_ENGOPT_DISABLE_MANAGED_SUPPORT: u32 = 16384u32;
pub const DEBUG_ENGOPT_DISABLE_MODULE_SYMBOL_LOAD: u32 = 32768u32;
pub const DEBUG_ENGOPT_DISABLE_STEPLINES_OPTIONS: u32 = 2097152u32;
pub const DEBUG_ENGOPT_DISALLOW_IMAGE_FILE_MAPPING: u32 = 131072u32;
pub const DEBUG_ENGOPT_DISALLOW_NETWORK_PATHS: u32 = 8u32;
pub const DEBUG_ENGOPT_DISALLOW_SHELL_COMMANDS: u32 = 4096u32;
pub const DEBUG_ENGOPT_FAIL_INCOMPLETE_INFORMATION: u32 = 512u32;
pub const DEBUG_ENGOPT_FINAL_BREAK: u32 = 128u32;
pub const DEBUG_ENGOPT_IGNORE_DBGHELP_VERSION: u32 = 1u32;
pub const DEBUG_ENGOPT_IGNORE_EXTENSION_VERSIONS: u32 = 2u32;
pub const DEBUG_ENGOPT_IGNORE_LOADER_EXCEPTIONS: u32 = 16u32;
pub const DEBUG_ENGOPT_INITIAL_BREAK: u32 = 32u32;
pub const DEBUG_ENGOPT_INITIAL_MODULE_BREAK: u32 = 64u32;
pub const DEBUG_ENGOPT_KD_QUIET_MODE: u32 = 8192u32;
pub const DEBUG_ENGOPT_NO_EXECUTE_REPEAT: u32 = 256u32;
pub const DEBUG_ENGOPT_PREFER_DML: u32 = 262144u32;
pub const DEBUG_ENGOPT_PREFER_TRACE_FILES: u32 = 8388608u32;
pub const DEBUG_ENGOPT_RESOLVE_SHADOWED_VARIABLES: u32 = 16777216u32;
pub const DEBUG_ENGOPT_SYNCHRONIZE_BREAKPOINTS: u32 = 2048u32;
pub const DEBUG_EVENT_BREAKPOINT: u32 = 1u32;
pub const DEBUG_EVENT_CHANGE_DEBUGGEE_STATE: u32 = 1024u32;
pub const DEBUG_EVENT_CHANGE_ENGINE_STATE: u32 = 2048u32;
pub const DEBUG_EVENT_CHANGE_SYMBOL_STATE: u32 = 4096u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_EVENT_CONTEXT {
    pub Size: u32,
    pub ProcessEngineId: u32,
    pub ThreadEngineId: u32,
    pub FrameEngineId: u32,
}
pub const DEBUG_EVENT_CREATE_PROCESS: u32 = 16u32;
pub const DEBUG_EVENT_CREATE_THREAD: u32 = 4u32;
pub const DEBUG_EVENT_EXCEPTION: u32 = 2u32;
pub const DEBUG_EVENT_EXIT_PROCESS: u32 = 32u32;
pub const DEBUG_EVENT_EXIT_THREAD: u32 = 8u32;
pub const DEBUG_EVENT_LOAD_MODULE: u32 = 64u32;
pub const DEBUG_EVENT_SERVICE_EXCEPTION: u32 = 8192u32;
pub const DEBUG_EVENT_SESSION_STATUS: u32 = 512u32;
pub const DEBUG_EVENT_SYSTEM_ERROR: u32 = 256u32;
pub const DEBUG_EVENT_UNLOAD_MODULE: u32 = 128u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_EXCEPTION_FILTER_PARAMETERS {
    pub ExecutionOption: u32,
    pub ContinueOption: u32,
    pub TextSize: u32,
    pub CommandSize: u32,
    pub SecondCommandSize: u32,
    pub ExceptionCode: u32,
}
pub const DEBUG_EXECUTE_DEFAULT: u32 = 0u32;
pub const DEBUG_EXECUTE_ECHO: u32 = 1u32;
pub const DEBUG_EXECUTE_EVENT: u32 = 2048u32;
pub const DEBUG_EXECUTE_EXTENSION: u32 = 32u32;
pub const DEBUG_EXECUTE_HOTKEY: u32 = 1024u32;
pub const DEBUG_EXECUTE_INTERNAL: u32 = 64u32;
pub const DEBUG_EXECUTE_MENU: u32 = 512u32;
pub const DEBUG_EXECUTE_NOT_LOGGED: u32 = 2u32;
pub const DEBUG_EXECUTE_NO_REPEAT: u32 = 4u32;
pub const DEBUG_EXECUTE_SCRIPT: u32 = 128u32;
pub const DEBUG_EXECUTE_TOOLBAR: u32 = 256u32;
pub const DEBUG_EXECUTE_USER_CLICKED: u32 = 16u32;
pub const DEBUG_EXECUTE_USER_TYPED: u32 = 8u32;
pub const DEBUG_EXEC_FLAGS_NONBLOCK: u32 = 1u32;
pub const DEBUG_EXPR_CPLUSPLUS: u32 = 1u32;
pub const DEBUG_EXPR_MASM: u32 = 0u32;
pub const DEBUG_EXTENSION_AT_ENGINE: u32 = 0u32;
pub const DEBUG_EXTINIT_HAS_COMMAND_HELP: u32 = 1u32;
pub const DEBUG_EXT_PVALUE_DEFAULT: u32 = 0u32;
pub const DEBUG_EXT_PVTYPE_IS_POINTER: u32 = 1u32;
pub const DEBUG_EXT_PVTYPE_IS_VALUE: u32 = 0u32;
pub const DEBUG_EXT_QVALUE_DEFAULT: u32 = 0u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEBUG_FAILURE_TYPE(pub i32);
pub const DEBUG_FA_ENTRY_ANSI_STRING: FA_ENTRY_TYPE = FA_ENTRY_TYPE(5i32);
pub const DEBUG_FA_ENTRY_ANSI_STRINGs: FA_ENTRY_TYPE = FA_ENTRY_TYPE(6i32);
pub const DEBUG_FA_ENTRY_ARRAY: FA_ENTRY_TYPE = FA_ENTRY_TYPE(32768i32);
pub const DEBUG_FA_ENTRY_EXTENSION_CMD: FA_ENTRY_TYPE = FA_ENTRY_TYPE(7i32);
pub const DEBUG_FA_ENTRY_INSTRUCTION_OFFSET: FA_ENTRY_TYPE = FA_ENTRY_TYPE(3i32);
pub const DEBUG_FA_ENTRY_NO_TYPE: FA_ENTRY_TYPE = FA_ENTRY_TYPE(0i32);
pub const DEBUG_FA_ENTRY_POINTER: FA_ENTRY_TYPE = FA_ENTRY_TYPE(4i32);
pub const DEBUG_FA_ENTRY_STRUCTURED_DATA: FA_ENTRY_TYPE = FA_ENTRY_TYPE(8i32);
pub const DEBUG_FA_ENTRY_ULONG: FA_ENTRY_TYPE = FA_ENTRY_TYPE(1i32);
pub const DEBUG_FA_ENTRY_ULONG64: FA_ENTRY_TYPE = FA_ENTRY_TYPE(2i32);
pub const DEBUG_FA_ENTRY_UNICODE_STRING: FA_ENTRY_TYPE = FA_ENTRY_TYPE(9i32);
pub const DEBUG_FILTER_BREAK: u32 = 0u32;
pub const DEBUG_FILTER_CREATE_PROCESS: u32 = 2u32;
pub const DEBUG_FILTER_CREATE_THREAD: u32 = 0u32;
pub const DEBUG_FILTER_DEBUGGEE_OUTPUT: u32 = 9u32;
pub const DEBUG_FILTER_EXIT_PROCESS: u32 = 3u32;
pub const DEBUG_FILTER_EXIT_THREAD: u32 = 1u32;
pub const DEBUG_FILTER_GO_HANDLED: u32 = 0u32;
pub const DEBUG_FILTER_GO_NOT_HANDLED: u32 = 1u32;
pub const DEBUG_FILTER_IGNORE: u32 = 3u32;
pub const DEBUG_FILTER_INITIAL_BREAKPOINT: u32 = 7u32;
pub const DEBUG_FILTER_INITIAL_MODULE_LOAD: u32 = 8u32;
pub const DEBUG_FILTER_LOAD_MODULE: u32 = 4u32;
pub const DEBUG_FILTER_OUTPUT: u32 = 2u32;
pub const DEBUG_FILTER_REMOVE: u32 = 4u32;
pub const DEBUG_FILTER_SECOND_CHANCE_BREAK: u32 = 1u32;
pub const DEBUG_FILTER_SYSTEM_ERROR: u32 = 6u32;
pub const DEBUG_FILTER_UNLOAD_MODULE: u32 = 5u32;
pub const DEBUG_FIND_SOURCE_BEST_MATCH: u32 = 2u32;
pub const DEBUG_FIND_SOURCE_DEFAULT: u32 = 0u32;
pub const DEBUG_FIND_SOURCE_FULL_PATH: u32 = 1u32;
pub const DEBUG_FIND_SOURCE_NO_SRCSRV: u32 = 4u32;
pub const DEBUG_FIND_SOURCE_TOKEN_LOOKUP: u32 = 8u32;
pub const DEBUG_FIND_SOURCE_WITH_CHECKSUM: u32 = 16u32;
pub const DEBUG_FIND_SOURCE_WITH_CHECKSUM_STRICT: u32 = 32u32;
pub const DEBUG_FLR_ACPI: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24576i32);
pub const DEBUG_FLR_ACPI_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24832i32);
pub const DEBUG_FLR_ACPI_EXTENSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(11i32);
pub const DEBUG_FLR_ACPI_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(13i32);
pub const DEBUG_FLR_ACPI_RESCONFLICT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12i32);
pub const DEBUG_FLR_ADDITIONAL_DEBUGTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65546i32);
pub const DEBUG_FLR_ADDITIONAL_XML: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1150976i32);
pub const DEBUG_FLR_ADD_PROCESS_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8219i32);
pub const DEBUG_FLR_ALUREON: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12372i32);
pub const DEBUG_FLR_ANALYSIS_REPROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052705i32);
pub const DEBUG_FLR_ANALYSIS_SESSION_ELAPSED_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052701i32);
pub const DEBUG_FLR_ANALYSIS_SESSION_HOST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052700i32);
pub const DEBUG_FLR_ANALYSIS_SESSION_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052699i32);
pub const DEBUG_FLR_ANALYSIS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052702i32);
pub const DEBUG_FLR_ANALYZABLE_POOL_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8202i32);
pub const DEBUG_FLR_APPKILL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8212i32);
pub const DEBUG_FLR_APPLICATION_VERIFIER_LOADED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048626i32);
pub const DEBUG_FLR_APPS_NOT_TERMINATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8258i32);
pub const DEBUG_FLR_APPVERIFERFLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048600i32);
pub const DEBUG_FLR_ARM_WRITE_AV_CAVEAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8241i32);
pub const DEBUG_FLR_ASSERT_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(768i32);
pub const DEBUG_FLR_ASSERT_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(769i32);
pub const DEBUG_FLR_ASSERT_INSTRUCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(778i32);
pub const DEBUG_FLR_BADPAGES_DETECTED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4109i32);
pub const DEBUG_FLR_BAD_HANDLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17i32);
pub const DEBUG_FLR_BAD_MEMORY_REFERENCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8210i32);
pub const DEBUG_FLR_BAD_OBJECT_REFERENCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8211i32);
pub const DEBUG_FLR_BAD_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8193i32);
pub const DEBUG_FLR_BLOCKED_THREAD0: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741818i32);
pub const DEBUG_FLR_BLOCKED_THREAD1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741817i32);
pub const DEBUG_FLR_BLOCKED_THREAD2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741816i32);
pub const DEBUG_FLR_BLOCKING_PROCESSID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741815i32);
pub const DEBUG_FLR_BLOCKING_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741820i32);
pub const DEBUG_FLR_BOOST_FOLLOWUP_TO_SPECIFIC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8222i32);
pub const DEBUG_FLR_BOOTSTAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28672i32);
pub const DEBUG_FLR_BOOTSTAT_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28928i32);
pub const DEBUG_FLR_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65536i32);
pub const DEBUG_FLR_BUCKET_ID_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052684i32);
pub const DEBUG_FLR_BUCKET_ID_FLAVOR_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052686i32);
pub const DEBUG_FLR_BUCKET_ID_FUNCTION_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052676i32);
pub const DEBUG_FLR_BUCKET_ID_FUNC_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65589i32);
pub const DEBUG_FLR_BUCKET_ID_IMAGE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052703i32);
pub const DEBUG_FLR_BUCKET_ID_MODULE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052674i32);
pub const DEBUG_FLR_BUCKET_ID_MODVER_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052675i32);
pub const DEBUG_FLR_BUCKET_ID_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052677i32);
pub const DEBUG_FLR_BUCKET_ID_PREFIX_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052673i32);
pub const DEBUG_FLR_BUCKET_ID_PRIVATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052704i32);
pub const DEBUG_FLR_BUCKET_ID_TIMEDATESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052683i32);
pub const DEBUG_FLR_BUGCHECKING_DRIVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12292i32);
pub const DEBUG_FLR_BUGCHECKING_DRIVER_IDTAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65559i32);
pub const DEBUG_FLR_BUGCHECK_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4108i32);
pub const DEBUG_FLR_BUGCHECK_DESC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1538i32);
pub const DEBUG_FLR_BUGCHECK_P1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4115i32);
pub const DEBUG_FLR_BUGCHECK_P2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4116i32);
pub const DEBUG_FLR_BUGCHECK_P3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4117i32);
pub const DEBUG_FLR_BUGCHECK_P4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4118i32);
pub const DEBUG_FLR_BUGCHECK_SPECIFIER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1537i32);
pub const DEBUG_FLR_BUGCHECK_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1536i32);
pub const DEBUG_FLR_BUILDNAME_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12349i32);
pub const DEBUG_FLR_BUILDOSVER_STR_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052929i32);
pub const DEBUG_FLR_BUILD_OS_FULL_VERSION_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65567i32);
pub const DEBUG_FLR_BUILD_VERSION_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65566i32);
pub const DEBUG_FLR_CANCELLATION_NOT_SUPPORTED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12350i32);
pub const DEBUG_FLR_CHKIMG_EXTENSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(19i32);
pub const DEBUG_FLR_CHPE_PROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435433i32);
pub const DEBUG_FLR_CLIENT_DRIVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1031i32);
pub const DEBUG_FLR_COLLECT_DATA_FOR_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65577i32);
pub const DEBUG_FLR_COMPUTER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65578i32);
pub const DEBUG_FLR_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741823i32);
pub const DEBUG_FLR_CONTEXT_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097164i32);
pub const DEBUG_FLR_CONTEXT_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097165i32);
pub const DEBUG_FLR_CONTEXT_FOLLOWUP_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097191i32);
pub const DEBUG_FLR_CONTEXT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097168i32);
pub const DEBUG_FLR_CONTEXT_METADATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097211i32);
pub const DEBUG_FLR_CONTEXT_ORDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097166i32);
pub const DEBUG_FLR_CONTEXT_RESTORE_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65551i32);
pub const DEBUG_FLR_CONTEXT_SYSTEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097167i32);
pub const DEBUG_FLR_CORRUPTING_POOL_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1026i32);
pub const DEBUG_FLR_CORRUPTING_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1027i32);
pub const DEBUG_FLR_CORRUPT_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8192i32);
pub const DEBUG_FLR_CORRUPT_SERVICE_TABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12308i32);
pub const DEBUG_FLR_COVERAGE_BUILD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8244i32);
pub const DEBUG_FLR_CPU_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12330i32);
pub const DEBUG_FLR_CPU_FAMILY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12333i32);
pub const DEBUG_FLR_CPU_MICROCODE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12329i32);
pub const DEBUG_FLR_CPU_MICROCODE_ZERO_INTEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8228i32);
pub const DEBUG_FLR_CPU_MODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12334i32);
pub const DEBUG_FLR_CPU_OVERCLOCKED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8198i32);
pub const DEBUG_FLR_CPU_SPEED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12331i32);
pub const DEBUG_FLR_CPU_STEPPING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12335i32);
pub const DEBUG_FLR_CPU_VENDOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12332i32);
pub const DEBUG_FLR_CRITICAL_PROCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4119i32);
pub const DEBUG_FLR_CRITICAL_PROCESS_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65628i32);
pub const DEBUG_FLR_CRITICAL_SECTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16i32);
pub const DEBUG_FLR_CURRENT_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(512i32);
pub const DEBUG_FLR_CUSTOMER_CRASH_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12299i32);
pub const DEBUG_FLR_CUSTOMREPORTTAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435454i32);
pub const DEBUG_FLR_CUSTOM_ANALYSIS_TAG_MAX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1342177280i32);
pub const DEBUG_FLR_CUSTOM_ANALYSIS_TAG_MIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1610612736i32);
pub const DEBUG_FLR_CUSTOM_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435431i32);
pub const DEBUG_FLR_CUSTOM_COMMAND_OUTPUT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435430i32);
pub const DEBUG_FLR_DEADLOCK_INPROC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048589i32);
pub const DEBUG_FLR_DEADLOCK_XPROC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048590i32);
pub const DEBUG_FLR_DEBUG_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1118208i32);
pub const DEBUG_FLR_DEFAULT_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65544i32);
pub const DEBUG_FLR_DEFAULT_SOLUTION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12294i32);
pub const DEBUG_FLR_DERIVED_WAIT_CHAIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048583i32);
pub const DEBUG_FLR_DESKTOP_HEAP_MISSING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048593i32);
pub const DEBUG_FLR_DETOURED_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12351i32);
pub const DEBUG_FLR_DEVICE_NODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(28i32);
pub const DEBUG_FLR_DEVICE_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3i32);
pub const DEBUG_FLR_DISKIO_READ_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12353i32);
pub const DEBUG_FLR_DISKIO_WRITE_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12354i32);
pub const DEBUG_FLR_DISKSEC_ISSUEDESCSTRING_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435450i32);
pub const DEBUG_FLR_DISKSEC_MFGID_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435451i32);
pub const DEBUG_FLR_DISKSEC_MODEL_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435452i32);
pub const DEBUG_FLR_DISKSEC_ORGID_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435453i32);
pub const DEBUG_FLR_DISKSEC_PRIVATE_DATASIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435444i32);
pub const DEBUG_FLR_DISKSEC_PRIVATE_OFFSET_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435445i32);
pub const DEBUG_FLR_DISKSEC_PRIVATE_TOTSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435446i32);
pub const DEBUG_FLR_DISKSEC_PUBLIC_DATASIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435447i32);
pub const DEBUG_FLR_DISKSEC_PUBLIC_OFFSET_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435448i32);
pub const DEBUG_FLR_DISKSEC_PUBLIC_TOTSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435449i32);
pub const DEBUG_FLR_DISKSEC_REASON_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435442i32);
pub const DEBUG_FLR_DISKSEC_TOTALSIZE_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435443i32);
pub const DEBUG_FLR_DISK_HARDWARE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8206i32);
pub const DEBUG_FLR_DPC_RUNTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4111i32);
pub const DEBUG_FLR_DPC_STACK_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741809i32);
pub const DEBUG_FLR_DPC_TIMELIMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4112i32);
pub const DEBUG_FLR_DPC_TIMEOUT_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4110i32);
pub const DEBUG_FLR_DRIVER_HARDWAREID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65552i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_DEVICE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65554i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_DEVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65633i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_ID_BUS_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65557i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_REV_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65556i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_SUBSYS_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65555i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_SUBVENDOR_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65632i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_VENDOR_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65553i32);
pub const DEBUG_FLR_DRIVER_HARDWARE_VENDOR_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65631i32);
pub const DEBUG_FLR_DRIVER_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2i32);
pub const DEBUG_FLR_DRIVER_VERIFIER_IO_VIOLATION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4096i32);
pub const DEBUG_FLR_DRIVER_XML_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65562i32);
pub const DEBUG_FLR_DRIVER_XML_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65564i32);
pub const DEBUG_FLR_DRIVER_XML_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65563i32);
pub const DEBUG_FLR_DRIVER_XML_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65565i32);
pub const DEBUG_FLR_DRVPOWERSTATE_SUBCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4101i32);
pub const DEBUG_FLR_DUMPSTREAM_COMMENTA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435435i32);
pub const DEBUG_FLR_DUMPSTREAM_COMMENTW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435434i32);
pub const DEBUG_FLR_DUMP_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048627i32);
pub const DEBUG_FLR_DUMP_FILE_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4113i32);
pub const DEBUG_FLR_DUMP_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048625i32);
pub const DEBUG_FLR_DUMP_QUALIFIER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048628i32);
pub const DEBUG_FLR_DUMP_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048602i32);
pub const DEBUG_FLR_END_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65612i32);
pub const DEBUG_FLR_ERESOURCE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(22i32);
pub const DEBUG_FLR_EVENT_CODE_DATA_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12338i32);
pub const DEBUG_FLR_EXCEPTION_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4097i32);
pub const DEBUG_FLR_EXCEPTION_CODE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4098i32);
pub const DEBUG_FLR_EXCEPTION_CODE_STR_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052672i32);
pub const DEBUG_FLR_EXCEPTION_CONTEXT_RECURSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12352i32);
pub const DEBUG_FLR_EXCEPTION_DOESNOT_MATCH_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(777i32);
pub const DEBUG_FLR_EXCEPTION_MODULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097190i32);
pub const DEBUG_FLR_EXCEPTION_PARAMETER1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(770i32);
pub const DEBUG_FLR_EXCEPTION_PARAMETER2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(771i32);
pub const DEBUG_FLR_EXCEPTION_PARAMETER3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(772i32);
pub const DEBUG_FLR_EXCEPTION_PARAMETER4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(773i32);
pub const DEBUG_FLR_EXCEPTION_RECORD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(774i32);
pub const DEBUG_FLR_EXCEPTION_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(776i32);
pub const DEBUG_FLR_EXECUTE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30i32);
pub const DEBUG_FLR_FAILED_INSTRUCTION_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(9i32);
pub const DEBUG_FLR_FAILURE_ANALYSIS_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65591i32);
pub const DEBUG_FLR_FAILURE_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65561i32);
pub const DEBUG_FLR_FAILURE_DISPLAY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097239i32);
pub const DEBUG_FLR_FAILURE_EXCEPTION_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65607i32);
pub const DEBUG_FLR_FAILURE_FUNCTION_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65609i32);
pub const DEBUG_FLR_FAILURE_ID_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65592i32);
pub const DEBUG_FLR_FAILURE_ID_HASH_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65593i32);
pub const DEBUG_FLR_FAILURE_ID_REPORT_LINK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65594i32);
pub const DEBUG_FLR_FAILURE_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65608i32);
pub const DEBUG_FLR_FAILURE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097238i32);
pub const DEBUG_FLR_FAILURE_MODULE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65629i32);
pub const DEBUG_FLR_FAILURE_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65606i32);
pub const DEBUG_FLR_FAILURE_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65610i32);
pub const DEBUG_FLR_FAULTING_INSTR_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12297i32);
pub const DEBUG_FLR_FAULTING_IP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483648i32);
pub const DEBUG_FLR_FAULTING_LOCAL_VARIABLE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048623i32);
pub const DEBUG_FLR_FAULTING_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483647i32);
pub const DEBUG_FLR_FAULTING_SERVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65570i32);
pub const DEBUG_FLR_FAULTING_SOURCE_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65569i32);
pub const DEBUG_FLR_FAULTING_SOURCE_COMMIT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65634i32);
pub const DEBUG_FLR_FAULTING_SOURCE_CONTROL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65635i32);
pub const DEBUG_FLR_FAULTING_SOURCE_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65586i32);
pub const DEBUG_FLR_FAULTING_SOURCE_LINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65585i32);
pub const DEBUG_FLR_FAULTING_SOURCE_LINE_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65587i32);
pub const DEBUG_FLR_FAULTING_SOURCE_PROJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65636i32);
pub const DEBUG_FLR_FAULTING_SOURCE_REPO_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65637i32);
pub const DEBUG_FLR_FAULTING_SOURCE_REPO_URL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65638i32);
pub const DEBUG_FLR_FAULTING_SOURCE_SRV_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65639i32);
pub const DEBUG_FLR_FAULTING_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741824i32);
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_M: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048597i32);
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_MF: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048595i32);
pub const DEBUG_FLR_FAULT_THREAD_SHA1_HASH_MFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048596i32);
pub const DEBUG_FLR_FA_ADHOC_ANALYSIS_ITEMS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097230i32);
pub const DEBUG_FLR_FA_PERF_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097214i32);
pub const DEBUG_FLR_FA_PERF_ELAPSED_MS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097218i32);
pub const DEBUG_FLR_FA_PERF_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097215i32);
pub const DEBUG_FLR_FA_PERF_ITEM_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097216i32);
pub const DEBUG_FLR_FA_PERF_ITERATIONS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097217i32);
pub const DEBUG_FLR_FEATURE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65613i32);
pub const DEBUG_FLR_FILESYSTEMS_NTFS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30208i32);
pub const DEBUG_FLR_FILESYSTEMS_NTFS_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30448i32);
pub const DEBUG_FLR_FILESYSTEMS_REFS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30720i32);
pub const DEBUG_FLR_FILESYSTEMS_REFS_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(30960i32);
pub const DEBUG_FLR_FILE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1280i32);
pub const DEBUG_FLR_FILE_IN_CAB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65571i32);
pub const DEBUG_FLR_FILE_LINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1281i32);
pub const DEBUG_FLR_FIXED_IN_OSVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65543i32);
pub const DEBUG_FLR_FOLLOWUP_BEFORE_RETRACER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65611i32);
pub const DEBUG_FLR_FOLLOWUP_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483641i32);
pub const DEBUG_FLR_FOLLOWUP_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097153i32);
pub const DEBUG_FLR_FOLLOWUP_DRIVER_ONLY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8196i32);
pub const DEBUG_FLR_FOLLOWUP_IP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483645i32);
pub const DEBUG_FLR_FOLLOWUP_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65539i32);
pub const DEBUG_FLR_FRAME_ONE_INVALID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483644i32);
pub const DEBUG_FLR_FRAME_SOURCE_FILE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097240i32);
pub const DEBUG_FLR_FRAME_SOURCE_FILE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097241i32);
pub const DEBUG_FLR_FRAME_SOURCE_LINE_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097242i32);
pub const DEBUG_FLR_FREED_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1028i32);
pub const DEBUG_FLR_GSFAILURE_ANALYSIS_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12323i32);
pub const DEBUG_FLR_GSFAILURE_COOKIES_MATCH_EXH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12356i32);
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12314i32);
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_EBP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12315i32);
pub const DEBUG_FLR_GSFAILURE_CORRUPTED_EBPESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12318i32);
pub const DEBUG_FLR_GSFAILURE_FALSE_POSITIVE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8236i32);
pub const DEBUG_FLR_GSFAILURE_FRAME_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12312i32);
pub const DEBUG_FLR_GSFAILURE_FRAME_COOKIE_COMPLEMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12313i32);
pub const DEBUG_FLR_GSFAILURE_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12310i32);
pub const DEBUG_FLR_GSFAILURE_MANAGED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12357i32);
pub const DEBUG_FLR_GSFAILURE_MANAGED_FRAMEID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12360i32);
pub const DEBUG_FLR_GSFAILURE_MANAGED_THREADID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12359i32);
pub const DEBUG_FLR_GSFAILURE_MEMORY_READ_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12320i32);
pub const DEBUG_FLR_GSFAILURE_MISSING_ESTABLISHER_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12355i32);
pub const DEBUG_FLR_GSFAILURE_MODULE_COOKIE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12311i32);
pub const DEBUG_FLR_GSFAILURE_NOT_UP2DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12326i32);
pub const DEBUG_FLR_GSFAILURE_OFF_BY_ONE_OVERRUN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12324i32);
pub const DEBUG_FLR_GSFAILURE_OVERRUN_LOCAL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12316i32);
pub const DEBUG_FLR_GSFAILURE_OVERRUN_LOCAL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12317i32);
pub const DEBUG_FLR_GSFAILURE_POSITIVELY_CORRUPTED_EBPESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12319i32);
pub const DEBUG_FLR_GSFAILURE_POSITIVE_BUFFER_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12322i32);
pub const DEBUG_FLR_GSFAILURE_PROBABLY_NOT_USING_GS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12321i32);
pub const DEBUG_FLR_GSFAILURE_RA_SMASHED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12325i32);
pub const DEBUG_FLR_GSFAILURE_UP2DATE_UNKNOWN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12327i32);
pub const DEBUG_FLR_HANDLE_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24i32);
pub const DEBUG_FLR_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8209i32);
pub const DEBUG_FLR_HANG_DATA_NEEDED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048584i32);
pub const DEBUG_FLR_HANG_REPORT_THREAD_IS_IDLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048594i32);
pub const DEBUG_FLR_HARDWARE_BUCKET_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65581i32);
pub const DEBUG_FLR_HARDWARE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8214i32);
pub const DEBUG_FLR_HIGH_NONPAGED_POOL_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8255i32);
pub const DEBUG_FLR_HIGH_PAGED_POOL_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8256i32);
pub const DEBUG_FLR_HIGH_PROCESS_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8253i32);
pub const DEBUG_FLR_HIGH_SERVICE_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8254i32);
pub const DEBUG_FLR_HIGH_SHARED_COMMIT_USAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8257i32);
pub const DEBUG_FLR_HOLDINFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65595i32);
pub const DEBUG_FLR_HOLDINFO_ACTIVE_HOLD_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65596i32);
pub const DEBUG_FLR_HOLDINFO_ALWAYS_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65600i32);
pub const DEBUG_FLR_HOLDINFO_ALWAYS_IGNORE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65599i32);
pub const DEBUG_FLR_HOLDINFO_HISTORIC_HOLD_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65598i32);
pub const DEBUG_FLR_HOLDINFO_LAST_SEEN_HOLD_DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65604i32);
pub const DEBUG_FLR_HOLDINFO_MANUAL_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65602i32);
pub const DEBUG_FLR_HOLDINFO_MAX_HOLD_LIMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65601i32);
pub const DEBUG_FLR_HOLDINFO_NOTIFICATION_ALIASES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65603i32);
pub const DEBUG_FLR_HOLDINFO_RECOMMEND_HOLD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65605i32);
pub const DEBUG_FLR_HOLDINFO_TENET_SOCRE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65597i32);
pub const DEBUG_FLR_IGNORE_BUCKET_ID_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8238i32);
pub const DEBUG_FLR_IGNORE_LARGE_MODULE_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8237i32);
pub const DEBUG_FLR_IGNORE_MODULE_HARDWARE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8240i32);
pub const DEBUG_FLR_IMAGE_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65579i32);
pub const DEBUG_FLR_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65537i32);
pub const DEBUG_FLR_IMAGE_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483646i32);
pub const DEBUG_FLR_IMAGE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483642i32);
pub const DEBUG_FLR_INSTR_POINTER_CLIFAULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12306i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_FREE_BLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12343i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_MODULE_NOT_IN_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12346i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_PAGED_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12370i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_RESERVED_BLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12344i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_UNLOADED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12340i32);
pub const DEBUG_FLR_INSTR_POINTER_IN_VM_MAPPED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12345i32);
pub const DEBUG_FLR_INSTR_POINTER_MISALIGNED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12305i32);
pub const DEBUG_FLR_INSTR_POINTER_NOT_IN_STREAM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12347i32);
pub const DEBUG_FLR_INSTR_POINTER_ON_HEAP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12337i32);
pub const DEBUG_FLR_INSTR_POINTER_ON_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12336i32);
pub const DEBUG_FLR_INSTR_SESSION_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1030i32);
pub const DEBUG_FLR_INTEL_CPU_BIOS_UPGRADE_NEEDED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8229i32);
pub const DEBUG_FLR_INTERNAL_BUCKET_CONTINUABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16389i32);
pub const DEBUG_FLR_INTERNAL_BUCKET_HITCOUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16387i32);
pub const DEBUG_FLR_INTERNAL_BUCKET_STATUS_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16390i32);
pub const DEBUG_FLR_INTERNAL_BUCKET_URL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16385i32);
pub const DEBUG_FLR_INTERNAL_RAID_BUG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16384i32);
pub const DEBUG_FLR_INTERNAL_RAID_BUG_DATABASE_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16388i32);
pub const DEBUG_FLR_INTERNAL_RESPONSE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65550i32);
pub const DEBUG_FLR_INTERNAL_SOLUTION_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16386i32);
pub const DEBUG_FLR_INVALID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(0i32);
pub const DEBUG_FLR_INVALID_DPC_FOUND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(7i32);
pub const DEBUG_FLR_INVALID_HEAP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(18i32);
pub const DEBUG_FLR_INVALID_KERNEL_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8205i32);
pub const DEBUG_FLR_INVALID_OPCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8218i32);
pub const DEBUG_FLR_INVALID_PFN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4i32);
pub const DEBUG_FLR_INVALID_USEREVENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(261i32);
pub const DEBUG_FLR_INVALID_USER_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8231i32);
pub const DEBUG_FLR_IOCONTROL_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4099i32);
pub const DEBUG_FLR_IOSB_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(260i32);
pub const DEBUG_FLR_IO_ERROR_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(775i32);
pub const DEBUG_FLR_IRP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(256i32);
pub const DEBUG_FLR_IRP_CANCEL_ROUTINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(259i32);
pub const DEBUG_FLR_IRP_MAJOR_FN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(257i32);
pub const DEBUG_FLR_IRP_MINOR_FN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(258i32);
pub const DEBUG_FLR_KERNEL: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(1i32);
pub const DEBUG_FLR_KERNEL_LOG_PROCESS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65582i32);
pub const DEBUG_FLR_KERNEL_LOG_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65583i32);
pub const DEBUG_FLR_KERNEL_VERIFIER_ENABLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8234i32);
pub const DEBUG_FLR_KEYVALUE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122304i32);
pub const DEBUG_FLR_KEY_VALUES_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122560i32);
pub const DEBUG_FLR_KEY_VALUES_VARIANT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1122816i32);
pub const DEBUG_FLR_KM_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048629i32);
pub const DEBUG_FLR_LARGE_TICK_INCREMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12369i32);
pub const DEBUG_FLR_LAST_CONTROL_TRANSFER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(10i32);
pub const DEBUG_FLR_LCIE_ISO_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048618i32);
pub const DEBUG_FLR_LEAKED_SESSION_POOL_TAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1029i32);
pub const DEBUG_FLR_LEGACY_PAGE_TABLE_ACCESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8252i32);
pub const DEBUG_FLR_LIVE_KERNEL_DUMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8243i32);
pub const DEBUG_FLR_LOADERLOCK_BLOCKED_API: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048605i32);
pub const DEBUG_FLR_LOADERLOCK_IN_WAIT_CHAIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048587i32);
pub const DEBUG_FLR_LOADERLOCK_OWNER_API: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048604i32);
pub const DEBUG_FLR_LOP_STACKHASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12309i32);
pub const DEBUG_FLR_LOW_SYSTEM_COMMIT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8251i32);
pub const DEBUG_FLR_MACHINE_INFO_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048608i32);
pub const DEBUG_FLR_MANAGED_ANALYSIS_PROVIDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1804i32);
pub const DEBUG_FLR_MANAGED_BITNESS_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1797i32);
pub const DEBUG_FLR_MANAGED_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1792i32);
pub const DEBUG_FLR_MANAGED_ENGINE_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1803i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2048i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2052i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_CMD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2288i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_CONTEXT_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1799i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2049i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2064i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2068i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2065i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2067i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_INNER_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2066i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2051i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_MESSAGE_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1795i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2080i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2084i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_HRESULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2081i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_MESSAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2083i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_NESTED_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2082i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1794i32);
pub const DEBUG_FLR_MANAGED_EXCEPTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2050i32);
pub const DEBUG_FLR_MANAGED_FRAME_CHAIN_CORRUPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12358i32);
pub const DEBUG_FLR_MANAGED_HRESULT_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1802i32);
pub const DEBUG_FLR_MANAGED_KERNEL_DEBUGGER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1801i32);
pub const DEBUG_FLR_MANAGED_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1793i32);
pub const DEBUG_FLR_MANAGED_OBJECT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1798i32);
pub const DEBUG_FLR_MANAGED_STACK_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1800i32);
pub const DEBUG_FLR_MANAGED_STACK_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1796i32);
pub const DEBUG_FLR_MANAGED_THREAD_CMD_CALLSTACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2544i32);
pub const DEBUG_FLR_MANAGED_THREAD_CMD_STACKOBJECTS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2545i32);
pub const DEBUG_FLR_MANAGED_THREAD_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2304i32);
pub const DEBUG_FLR_MANUAL_BREAKIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8208i32);
pub const DEBUG_FLR_MARKER_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65560i32);
pub const DEBUG_FLR_MARKER_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65549i32);
pub const DEBUG_FLR_MARKER_MODULE_FILE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65558i32);
pub const DEBUG_FLR_MASK_ALL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1i32);
pub const DEBUG_FLR_MEMDIAG_LASTRUN_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12341i32);
pub const DEBUG_FLR_MEMDIAG_LASTRUN_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12342i32);
pub const DEBUG_FLR_MEMORY_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1134592i32);
pub const DEBUG_FLR_MEMORY_CORRUPTION_SIGNATURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12348i32);
pub const DEBUG_FLR_MEMORY_CORRUPTOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12289i32);
pub const DEBUG_FLR_MILCORE_BREAK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8232i32);
pub const DEBUG_FLR_MINUTES_SINCE_LAST_EVENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048225i32);
pub const DEBUG_FLR_MINUTES_SINCE_LAST_EVENT_OF_THIS_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048226i32);
pub const DEBUG_FLR_MISSING_CLR_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8249i32);
pub const DEBUG_FLR_MISSING_IMPORTANT_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8248i32);
pub const DEBUG_FLR_MM_INTERNAL_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4100i32);
pub const DEBUG_FLR_MODLIST_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048601i32);
pub const DEBUG_FLR_MODLIST_TSCHKSUM_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048606i32);
pub const DEBUG_FLR_MODLIST_UNLOADED_SHA1_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048607i32);
pub const DEBUG_FLR_MODULE_BUCKET_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65545i32);
pub const DEBUG_FLR_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048624i32);
pub const DEBUG_FLR_MODULE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65542i32);
pub const DEBUG_FLR_MODULE_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65576i32);
pub const DEBUG_FLR_MOD_SPECIFIC_DATA_ONLY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8226i32);
pub const DEBUG_FLR_NO_ARCH_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8239i32);
pub const DEBUG_FLR_NO_BUGCHECK_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8216i32);
pub const DEBUG_FLR_NO_IMAGE_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8215i32);
pub const DEBUG_FLR_NO_IMAGE_TIMESTAMP_IN_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8233i32);
pub const DEBUG_FLR_NTGLOBALFLAG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048599i32);
pub const DEBUG_FLR_ON_DPC_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8242i32);
pub const DEBUG_FLR_ORIGINAL_CAB_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65568i32);
pub const DEBUG_FLR_OSBUILD_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052928i32);
pub const DEBUG_FLR_OS_BRANCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052680i32);
pub const DEBUG_FLR_OS_BUILD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052678i32);
pub const DEBUG_FLR_OS_BUILD_LAYERS_XML: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052711i32);
pub const DEBUG_FLR_OS_BUILD_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052708i32);
pub const DEBUG_FLR_OS_BUILD_TIMESTAMP_ISO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052697i32);
pub const DEBUG_FLR_OS_BUILD_TIMESTAMP_LAB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052681i32);
pub const DEBUG_FLR_OS_FLAVOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052685i32);
pub const DEBUG_FLR_OS_LOCALE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052696i32);
pub const DEBUG_FLR_OS_LOCALE_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052709i32);
pub const DEBUG_FLR_OS_MAJOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052706i32);
pub const DEBUG_FLR_OS_MINOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052707i32);
pub const DEBUG_FLR_OS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052692i32);
pub const DEBUG_FLR_OS_NAME_EDITION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052693i32);
pub const DEBUG_FLR_OS_PLATFORM_ARCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052694i32);
pub const DEBUG_FLR_OS_PLATFORM_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052710i32);
pub const DEBUG_FLR_OS_PRODUCT_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052688i32);
pub const DEBUG_FLR_OS_REVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052691i32);
pub const DEBUG_FLR_OS_SERVICEPACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052679i32);
pub const DEBUG_FLR_OS_SERVICEPACK_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052695i32);
pub const DEBUG_FLR_OS_SKU: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052687i32);
pub const DEBUG_FLR_OS_SUITE_MASK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052689i32);
pub const DEBUG_FLR_OS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052682i32);
pub const DEBUG_FLR_OS_VERSION_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12291i32);
pub const DEBUG_FLR_OVERLAPPED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8227i32);
pub const DEBUG_FLR_OVERLAPPED_UNLOADED_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8230i32);
pub const DEBUG_FLR_PAGE_HASH_ERRORS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4114i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEBUG_FLR_PARAM_TYPE(pub i32);
pub const DEBUG_FLR_PG_MISMATCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(27i32);
pub const DEBUG_FLR_PHONE_APPID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048215i32);
pub const DEBUG_FLR_PHONE_APPVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048217i32);
pub const DEBUG_FLR_PHONE_BOOTLOADERVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048209i32);
pub const DEBUG_FLR_PHONE_BUILDBRANCH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048196i32);
pub const DEBUG_FLR_PHONE_BUILDER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048197i32);
pub const DEBUG_FLR_PHONE_BUILDNUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048194i32);
pub const DEBUG_FLR_PHONE_BUILDTIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048195i32);
pub const DEBUG_FLR_PHONE_FIRMWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048202i32);
pub const DEBUG_FLR_PHONE_HARDWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048206i32);
pub const DEBUG_FLR_PHONE_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048198i32);
pub const DEBUG_FLR_PHONE_MCCMNC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048201i32);
pub const DEBUG_FLR_PHONE_OPERATOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048200i32);
pub const DEBUG_FLR_PHONE_QFE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048199i32);
pub const DEBUG_FLR_PHONE_RADIOHARDWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048207i32);
pub const DEBUG_FLR_PHONE_RADIOSOFTWAREREVISION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048208i32);
pub const DEBUG_FLR_PHONE_RAM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048203i32);
pub const DEBUG_FLR_PHONE_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048210i32);
pub const DEBUG_FLR_PHONE_REPORTTIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048214i32);
pub const DEBUG_FLR_PHONE_ROMVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048204i32);
pub const DEBUG_FLR_PHONE_SKUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048216i32);
pub const DEBUG_FLR_PHONE_SOCVERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048205i32);
pub const DEBUG_FLR_PHONE_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048211i32);
pub const DEBUG_FLR_PHONE_SOURCEEXTERNAL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048212i32);
pub const DEBUG_FLR_PHONE_UIF_APPID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048220i32);
pub const DEBUG_FLR_PHONE_UIF_APPNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048219i32);
pub const DEBUG_FLR_PHONE_UIF_CATEGORY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048221i32);
pub const DEBUG_FLR_PHONE_UIF_COMMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048218i32);
pub const DEBUG_FLR_PHONE_UIF_ORIGIN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048222i32);
pub const DEBUG_FLR_PHONE_USERALIAS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048213i32);
pub const DEBUG_FLR_PHONE_VERSIONMAJOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048192i32);
pub const DEBUG_FLR_PHONE_VERSIONMINOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048193i32);
pub const DEBUG_FLR_PLATFORM_BUCKET_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65630i32);
pub const DEBUG_FLR_PNP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32768i32);
pub const DEBUG_FLR_PNP_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(33024i32);
pub const DEBUG_FLR_PNP_IRP_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32770i32);
pub const DEBUG_FLR_PNP_IRP_ADDRESS_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(264i32);
pub const DEBUG_FLR_PNP_TRIAGE_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(32769i32);
pub const DEBUG_FLR_PNP_TRIAGE_DATA_DEPRECATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(23i32);
pub const DEBUG_FLR_POISONED_TB: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8200i32);
pub const DEBUG_FLR_POOL_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1024i32);
pub const DEBUG_FLR_POOL_CORRUPTOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12288i32);
pub const DEBUG_FLR_POSSIBLE_INVALID_CONTROL_TRANSFER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8199i32);
pub const DEBUG_FLR_POSSIBLE_STACK_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8245i32);
pub const DEBUG_FLR_POWERREQUEST_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29i32);
pub const DEBUG_FLR_PO_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(24833i32);
pub const DEBUG_FLR_PREVIOUS_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(513i32);
pub const DEBUG_FLR_PREVIOUS_MODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(265i32);
pub const DEBUG_FLR_PRIMARY_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048579i32);
pub const DEBUG_FLR_PRIMARY_PROBLEM_CLASS_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048580i32);
pub const DEBUG_FLR_PROBLEM_CLASSES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048578i32);
pub const DEBUG_FLR_PROBLEM_CODE_PATH_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048585i32);
pub const DEBUG_FLR_PROCESSES_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1142784i32);
pub const DEBUG_FLR_PROCESSOR_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741814i32);
pub const DEBUG_FLR_PROCESSOR_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12339i32);
pub const DEBUG_FLR_PROCESS_BAM_CURRENT_THROTTLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435437i32);
pub const DEBUG_FLR_PROCESS_BAM_PREVIOUS_THROTTLED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435436i32);
pub const DEBUG_FLR_PROCESS_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097189i32);
pub const DEBUG_FLR_PROCESS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65547i32);
pub const DEBUG_FLR_PROCESS_OBJECT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8i32);
pub const DEBUG_FLR_PROCESS_PRODUCTNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65575i32);
pub const DEBUG_FLR_RAISED_IRQL_USER_FAULT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8220i32);
pub const DEBUG_FLR_READ_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(14i32);
pub const DEBUG_FLR_RECURRING_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12296i32);
pub const DEBUG_FLR_REGISTRYTXT_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65584i32);
pub const DEBUG_FLR_REGISTRYTXT_STRESS_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12307i32);
pub const DEBUG_FLR_REGISTRY_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3145728i32);
pub const DEBUG_FLR_REPORT_INFO_CREATION_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048229i32);
pub const DEBUG_FLR_REPORT_INFO_GUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048227i32);
pub const DEBUG_FLR_REPORT_INFO_SOURCE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048228i32);
pub const DEBUG_FLR_REQUESTED_IRQL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(514i32);
pub const DEBUG_FLR_RESERVED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1i32);
pub const DEBUG_FLR_RESOURCE_CALL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4352i32);
pub const DEBUG_FLR_RESOURCE_CALL_TYPE_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4353i32);
pub const DEBUG_FLR_SCM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20992i32);
pub const DEBUG_FLR_SCM_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21232i32);
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21233i32);
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_CONTROLCODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21234i32);
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_SERVICENAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21236i32);
pub const DEBUG_FLR_SCM_BLACKBOX_ENTRY_STARTTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21235i32);
pub const DEBUG_FLR_SEARCH_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048614i32);
pub const DEBUG_FLR_SECURITY_COOKIES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4105i32);
pub const DEBUG_FLR_SERVICE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20480i32);
pub const DEBUG_FLR_SERVICETABLE_MODIFIED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12371i32);
pub const DEBUG_FLR_SERVICE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1146880i32);
pub const DEBUG_FLR_SERVICE_DEPENDONGROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20486i32);
pub const DEBUG_FLR_SERVICE_DEPENDONSERVICE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20485i32);
pub const DEBUG_FLR_SERVICE_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20484i32);
pub const DEBUG_FLR_SERVICE_DISPLAYNAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20483i32);
pub const DEBUG_FLR_SERVICE_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20482i32);
pub const DEBUG_FLR_SERVICE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20481i32);
pub const DEBUG_FLR_SHOW_ERRORLOG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8207i32);
pub const DEBUG_FLR_SHOW_LCIE_ISO_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048619i32);
pub const DEBUG_FLR_SIMULTANEOUS_TELSVC_INSTANCES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048223i32);
pub const DEBUG_FLR_SIMULTANEOUS_TELWP_INSTANCES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1879048224i32);
pub const DEBUG_FLR_SINGLE_BIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8203i32);
pub const DEBUG_FLR_SINGLE_BIT_PFN_PAGE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8213i32);
pub const DEBUG_FLR_SKIP_CORRUPT_MODULE_DETECTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8235i32);
pub const DEBUG_FLR_SKIP_MODULE_SPECIFIC_BUCKET_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65588i32);
pub const DEBUG_FLR_SKIP_STACK_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8217i32);
pub const DEBUG_FLR_SM_BUFFER_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177286i32);
pub const DEBUG_FLR_SM_COMPRESSION_FORMAT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177280i32);
pub const DEBUG_FLR_SM_ONEBIT_SOLUTION_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177287i32);
pub const DEBUG_FLR_SM_SOURCE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177283i32);
pub const DEBUG_FLR_SM_SOURCE_PFN1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177281i32);
pub const DEBUG_FLR_SM_SOURCE_PFN2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177282i32);
pub const DEBUG_FLR_SM_SOURCE_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177284i32);
pub const DEBUG_FLR_SM_TARGET_PFN: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1342177285i32);
pub const DEBUG_FLR_SOLUTION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12293i32);
pub const DEBUG_FLR_SOLUTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12295i32);
pub const DEBUG_FLR_SPECIAL_POOL_CORRUPTION_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1025i32);
pub const DEBUG_FLR_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097152i32);
pub const DEBUG_FLR_STACKHASH_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1138688i32);
pub const DEBUG_FLR_STACKUSAGE_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12363i32);
pub const DEBUG_FLR_STACKUSAGE_FUNCTION_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12364i32);
pub const DEBUG_FLR_STACKUSAGE_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12361i32);
pub const DEBUG_FLR_STACKUSAGE_IMAGE_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12362i32);
pub const DEBUG_FLR_STACKUSAGE_RECURSION_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12365i32);
pub const DEBUG_FLR_STACK_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65540i32);
pub const DEBUG_FLR_STACK_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097155i32);
pub const DEBUG_FLR_STACK_FRAMES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097212i32);
pub const DEBUG_FLR_STACK_FRAME_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097163i32);
pub const DEBUG_FLR_STACK_FRAME_FUNCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097162i32);
pub const DEBUG_FLR_STACK_FRAME_IMAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097161i32);
pub const DEBUG_FLR_STACK_FRAME_INSTRUCTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097157i32);
pub const DEBUG_FLR_STACK_FRAME_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097160i32);
pub const DEBUG_FLR_STACK_FRAME_MODULE_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097224i32);
pub const DEBUG_FLR_STACK_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097156i32);
pub const DEBUG_FLR_STACK_FRAME_SRC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097225i32);
pub const DEBUG_FLR_STACK_FRAME_SYMBOL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097158i32);
pub const DEBUG_FLR_STACK_FRAME_SYMBOL_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097159i32);
pub const DEBUG_FLR_STACK_OVERFLOW: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12301i32);
pub const DEBUG_FLR_STACK_POINTER_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12302i32);
pub const DEBUG_FLR_STACK_POINTER_MISALIGNED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12304i32);
pub const DEBUG_FLR_STACK_POINTER_ONEBIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12303i32);
pub const DEBUG_FLR_STACK_SHA1_HASH_M: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097221i32);
pub const DEBUG_FLR_STACK_SHA1_HASH_MF: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097219i32);
pub const DEBUG_FLR_STACK_SHA1_HASH_MFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097220i32);
pub const DEBUG_FLR_STACK_TEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65541i32);
pub const DEBUG_FLR_STATUS_CODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4102i32);
pub const DEBUG_FLR_STORAGE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29696i32);
pub const DEBUG_FLR_STORAGE_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29936i32);
pub const DEBUG_FLR_STORAGE_ISSUEDESCSTRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29700i32);
pub const DEBUG_FLR_STORAGE_MFGID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29699i32);
pub const DEBUG_FLR_STORAGE_MODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29698i32);
pub const DEBUG_FLR_STORAGE_ORGID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29697i32);
pub const DEBUG_FLR_STORAGE_PRIVATE_DATASIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29706i32);
pub const DEBUG_FLR_STORAGE_PRIVATE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29705i32);
pub const DEBUG_FLR_STORAGE_PRIVATE_TOTSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29704i32);
pub const DEBUG_FLR_STORAGE_PUBLIC_DATASIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29703i32);
pub const DEBUG_FLR_STORAGE_PUBLIC_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29702i32);
pub const DEBUG_FLR_STORAGE_PUBLIC_TOTSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29701i32);
pub const DEBUG_FLR_STORAGE_REASON: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29708i32);
pub const DEBUG_FLR_STORAGE_TOTALSIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(29707i32);
pub const DEBUG_FLR_STORE_DEVELOPER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612743i32);
pub const DEBUG_FLR_STORE_IS_MICROSOFT_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612754i32);
pub const DEBUG_FLR_STORE_LEGACY_PARENT_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612747i32);
pub const DEBUG_FLR_STORE_LEGACY_WINDOWS_PHONE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612749i32);
pub const DEBUG_FLR_STORE_LEGACY_WINDOWS_STORE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612748i32);
pub const DEBUG_FLR_STORE_LEGACY_XBOX_360_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612751i32);
pub const DEBUG_FLR_STORE_LEGACY_XBOX_ONE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612750i32);
pub const DEBUG_FLR_STORE_PACKAGE_FAMILY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612744i32);
pub const DEBUG_FLR_STORE_PACKAGE_IDENTITY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612745i32);
pub const DEBUG_FLR_STORE_PREFERRED_SKU_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612753i32);
pub const DEBUG_FLR_STORE_PRIMARY_PARENT_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612746i32);
pub const DEBUG_FLR_STORE_PRODUCT_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612738i32);
pub const DEBUG_FLR_STORE_PRODUCT_DISPLAY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612737i32);
pub const DEBUG_FLR_STORE_PRODUCT_EXTENDED_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612739i32);
pub const DEBUG_FLR_STORE_PRODUCT_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612736i32);
pub const DEBUG_FLR_STORE_PUBLISHER_CERTIFICATE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612742i32);
pub const DEBUG_FLR_STORE_PUBLISHER_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612740i32);
pub const DEBUG_FLR_STORE_PUBLISHER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612741i32);
pub const DEBUG_FLR_STORE_URL_APP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612755i32);
pub const DEBUG_FLR_STORE_URL_APPHEALTH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612756i32);
pub const DEBUG_FLR_STORE_XBOX_TITLE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1610612752i32);
pub const DEBUG_FLR_STREAM_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1130496i32);
pub const DEBUG_FLR_SUSPECT_CODE_PATH_HASH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048586i32);
pub const DEBUG_FLR_SVCHOST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20736i32);
pub const DEBUG_FLR_SVCHOST_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20737i32);
pub const DEBUG_FLR_SVCHOST_IMAGEPATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20738i32);
pub const DEBUG_FLR_SVCHOST_SERVICEDLL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20739i32);
pub const DEBUG_FLR_SWITCH_PROCESS_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8223i32);
pub const DEBUG_FLR_SYMBOL_FROM_RAW_STACK_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-2147483643i32);
pub const DEBUG_FLR_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65538i32);
pub const DEBUG_FLR_SYMBOL_ON_RAW_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4104i32);
pub const DEBUG_FLR_SYMBOL_ROUTINE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65580i32);
pub const DEBUG_FLR_SYMBOL_STACK_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4103i32);
pub const DEBUG_FLR_SYSINFO_BASEBOARD_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17156i32);
pub const DEBUG_FLR_SYSINFO_BASEBOARD_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17157i32);
pub const DEBUG_FLR_SYSINFO_BASEBOARD_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17158i32);
pub const DEBUG_FLR_SYSINFO_BIOS_DATE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17161i32);
pub const DEBUG_FLR_SYSINFO_BIOS_VENDOR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17159i32);
pub const DEBUG_FLR_SYSINFO_BIOS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17160i32);
pub const DEBUG_FLR_SYSINFO_SYSTEM_MANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17152i32);
pub const DEBUG_FLR_SYSINFO_SYSTEM_PRODUCT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17153i32);
pub const DEBUG_FLR_SYSINFO_SYSTEM_SKU: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17154i32);
pub const DEBUG_FLR_SYSINFO_SYSTEM_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17155i32);
pub const DEBUG_FLR_SYSTEM_LOCALE_deprecated: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12298i32);
pub const DEBUG_FLR_SYSXML_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16897i32);
pub const DEBUG_FLR_SYSXML_LOCALEID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16896i32);
pub const DEBUG_FLR_TARGET_MODE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4107i32);
pub const DEBUG_FLR_TARGET_TIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8250i32);
pub const DEBUG_FLR_TESTRESULTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435455i32);
pub const DEBUG_FLR_TESTRESULTSERVER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435456i32);
pub const DEBUG_FLR_THREADPOOL_WAITER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(4106i32);
pub const DEBUG_FLR_THREAD_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048577i32);
pub const DEBUG_FLR_TIMELINE_ANALYSIS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1126400i32);
pub const DEBUG_FLR_TIMELINE_TIMES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1126401i32);
pub const DEBUG_FLR_TRAP_FRAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741822i32);
pub const DEBUG_FLR_TRAP_FRAME_RECURSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12300i32);
pub const DEBUG_FLR_TRIAGER_OS_BUILD_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12328i32);
pub const DEBUG_FLR_TSS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741821i32);
pub const DEBUG_FLR_TWO_BIT_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8204i32);
pub const DEBUG_FLR_ULS_SCRIPT_EXCEPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048617i32);
pub const DEBUG_FLR_UNALIGNED_STACK_POINTER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12290i32);
pub const DEBUG_FLR_UNKNOWN: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(0i32);
pub const DEBUG_FLR_UNKNOWN_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8201i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_FOLLOWUP_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65573i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_PROBLEM_CLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048581i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_PROBLEM_CLASS_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048582i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65574i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_SYMBOL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65572i32);
pub const DEBUG_FLR_UNRESPONSIVE_UI_THREAD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741819i32);
pub const DEBUG_FLR_UNUSED001: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8197i32);
pub const DEBUG_FLR_URLS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048610i32);
pub const DEBUG_FLR_URLS_DISCOVERED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048609i32);
pub const DEBUG_FLR_URL_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048611i32);
pub const DEBUG_FLR_URL_LCIE_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048620i32);
pub const DEBUG_FLR_URL_URLMON_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048621i32);
pub const DEBUG_FLR_URL_XMLHTTPREQ_SYNC_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048622i32);
pub const DEBUG_FLR_USBPORT_OCADATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(20i32);
pub const DEBUG_FLR_USER: DEBUG_FAILURE_TYPE = DEBUG_FAILURE_TYPE(2i32);
pub const DEBUG_FLR_USERBREAK_PEB_PAGEDOUT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8225i32);
pub const DEBUG_FLR_USERMODE_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048576i32);
pub const DEBUG_FLR_USER_GLOBAL_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3153920i32);
pub const DEBUG_FLR_USER_LCID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052690i32);
pub const DEBUG_FLR_USER_LCID_STR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1052698i32);
pub const DEBUG_FLR_USER_MODE_BUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65614i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_EVENTTYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65616i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65615i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P0: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65619i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P1: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65620i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P2: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65621i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P3: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65622i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P4: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65623i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P5: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65624i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P6: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65625i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_P7: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65626i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_REPORTCREATIONTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65618i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_REPORTGUID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65617i32);
pub const DEBUG_FLR_USER_MODE_BUCKET_STRING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65627i32);
pub const DEBUG_FLR_USER_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65548i32);
pub const DEBUG_FLR_USER_PROBLEM_CLASSES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3162112i32);
pub const DEBUG_FLR_USER_THREAD_ATTRIBUTES: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3158016i32);
pub const DEBUG_FLR_USE_DEFAULT_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8221i32);
pub const DEBUG_FLR_VERIFIER_DRIVER_ENTRY: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(263i32);
pub const DEBUG_FLR_VERIFIER_FOUND_DEADLOCK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(26i32);
pub const DEBUG_FLR_VERIFIER_STOP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8224i32);
pub const DEBUG_FLR_VIDEO_TDR_CONTEXT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(262i32);
pub const DEBUG_FLR_VIRTUAL_MACHINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(17162i32);
pub const DEBUG_FLR_WAIT_CHAIN_COMMAND: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048598i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_00: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16648i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_01: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16649i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_02: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16650i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_03: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16651i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_04: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16652i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_05: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16653i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_06: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16654i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_07: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16655i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_08: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16656i32);
pub const DEBUG_FLR_WATSON_GENERIC_BUCKETING_09: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16657i32);
pub const DEBUG_FLR_WATSON_GENERIC_EVENT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16647i32);
pub const DEBUG_FLR_WATSON_IBUCKET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16644i32);
pub const DEBUG_FLR_WATSON_IBUCKETTABLE_S1_RESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048613i32);
pub const DEBUG_FLR_WATSON_IBUCKET_S1_RESP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048612i32);
pub const DEBUG_FLR_WATSON_MODULE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16640i32);
pub const DEBUG_FLR_WATSON_MODULE_OFFSET: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16642i32);
pub const DEBUG_FLR_WATSON_MODULE_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16645i32);
pub const DEBUG_FLR_WATSON_MODULE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16641i32);
pub const DEBUG_FLR_WATSON_PROCESS_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16646i32);
pub const DEBUG_FLR_WATSON_PROCESS_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16643i32);
pub const DEBUG_FLR_WCT_XML_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048591i32);
pub const DEBUG_FLR_WERCOLLECTION_DEFAULTCOLLECTION_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435438i32);
pub const DEBUG_FLR_WERCOLLECTION_MINIDUMP_WRITE_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435439i32);
pub const DEBUG_FLR_WERCOLLECTION_PROCESSHEAPDUMP_REQUEST_FAILURE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435440i32);
pub const DEBUG_FLR_WERCOLLECTION_PROCESSTERMINATED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435441i32);
pub const DEBUG_FLR_WER_DATA_COLLECTION_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048615i32);
pub const DEBUG_FLR_WER_MACHINE_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048616i32);
pub const DEBUG_FLR_WHEA_ERROR_RECORD: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(25i32);
pub const DEBUG_FLR_WINLOGON_BLACKBOX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-268435432i32);
pub const DEBUG_FLR_WMI_QUERY_DATA: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(3149824i32);
pub const DEBUG_FLR_WORKER_ROUTINE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(5i32);
pub const DEBUG_FLR_WORK_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(6i32);
pub const DEBUG_FLR_WORK_QUEUE_ITEM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(21i32);
pub const DEBUG_FLR_WQL_EVENTLOG_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16899i32);
pub const DEBUG_FLR_WQL_EVENT_COUNT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(16898i32);
pub const DEBUG_FLR_WRITE_ADDRESS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(15i32);
pub const DEBUG_FLR_WRONG_SYMBOLS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8195i32);
pub const DEBUG_FLR_WRONG_SYMBOLS_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8247i32);
pub const DEBUG_FLR_WRONG_SYMBOLS_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8246i32);
pub const DEBUG_FLR_XBOX_LIVE_ENVIRONMENT: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12368i32);
pub const DEBUG_FLR_XBOX_SYSTEM_CRASHTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12367i32);
pub const DEBUG_FLR_XBOX_SYSTEM_UPTIME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(12366i32);
pub const DEBUG_FLR_XCS_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048603i32);
pub const DEBUG_FLR_XDV_HELP_LINK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741811i32);
pub const DEBUG_FLR_XDV_RULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741810i32);
pub const DEBUG_FLR_XDV_STATE_VARIABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741812i32);
pub const DEBUG_FLR_XDV_VIOLATED_CONDITION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(-1073741813i32);
pub const DEBUG_FLR_XHCI_FIRMWARE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(65590i32);
pub const DEBUG_FLR_XML_APPLICATION_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097231i32);
pub const DEBUG_FLR_XML_ATTRIBUTE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097194i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_D1VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097197i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_D2VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097198i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_DOVALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097199i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097201i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097193i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097195i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_THREAD_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097202i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097196i32);
pub const DEBUG_FLR_XML_ATTRIBUTE_VALUE_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097200i32);
pub const DEBUG_FLR_XML_ENCODED_OFFSETS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097213i32);
pub const DEBUG_FLR_XML_EVENTTYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097235i32);
pub const DEBUG_FLR_XML_GLOBALATTRIBUTE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097192i32);
pub const DEBUG_FLR_XML_MODERN_ASYNC_REQUEST_OUTSTANDING: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097234i32);
pub const DEBUG_FLR_XML_MODULE_INFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097169i32);
pub const DEBUG_FLR_XML_MODULE_INFO_BASE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097186i32);
pub const DEBUG_FLR_XML_MODULE_INFO_CHECKSUM: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097174i32);
pub const DEBUG_FLR_XML_MODULE_INFO_COMPANY_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097182i32);
pub const DEBUG_FLR_XML_MODULE_INFO_DRIVER_GROUP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097251i32);
pub const DEBUG_FLR_XML_MODULE_INFO_FILE_DESCRIPTION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097183i32);
pub const DEBUG_FLR_XML_MODULE_INFO_FILE_FLAGS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097223i32);
pub const DEBUG_FLR_XML_MODULE_INFO_FIXED_FILE_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097178i32);
pub const DEBUG_FLR_XML_MODULE_INFO_FIXED_PROD_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097179i32);
pub const DEBUG_FLR_XML_MODULE_INFO_IMAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097172i32);
pub const DEBUG_FLR_XML_MODULE_INFO_IMAGE_PATH: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097173i32);
pub const DEBUG_FLR_XML_MODULE_INFO_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097170i32);
pub const DEBUG_FLR_XML_MODULE_INFO_INTERNAL_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097184i32);
pub const DEBUG_FLR_XML_MODULE_INFO_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097171i32);
pub const DEBUG_FLR_XML_MODULE_INFO_ON_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097177i32);
pub const DEBUG_FLR_XML_MODULE_INFO_ORIG_FILE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097185i32);
pub const DEBUG_FLR_XML_MODULE_INFO_PRODUCT_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097188i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SIZE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097187i32);
pub const DEBUG_FLR_XML_MODULE_INFO_STRING_FILE_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097180i32);
pub const DEBUG_FLR_XML_MODULE_INFO_STRING_PROD_VER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097181i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMBOL_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097222i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_DETAIL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097245i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097244i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_SEC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097246i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_IMAGE_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097243i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_DETAIL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097249i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_ERROR: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097248i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_SEC: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097250i32);
pub const DEBUG_FLR_XML_MODULE_INFO_SYMSRV_PDB_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097247i32);
pub const DEBUG_FLR_XML_MODULE_INFO_TIMESTAMP: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097175i32);
pub const DEBUG_FLR_XML_MODULE_INFO_UNLOADED: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097176i32);
pub const DEBUG_FLR_XML_MODULE_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097154i32);
pub const DEBUG_FLR_XML_PACKAGE_MONIKER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097232i32);
pub const DEBUG_FLR_XML_PACKAGE_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097236i32);
pub const DEBUG_FLR_XML_PACKAGE_RELATIVE_APPLICATION_ID: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097233i32);
pub const DEBUG_FLR_XML_PACKAGE_VERSION: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097237i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097204i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_FRAME_NUMBER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097208i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_LIST: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097203i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_NAME: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097205i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_THREAD_INDEX: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097209i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_VALUE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097206i32);
pub const DEBUG_FLR_XML_PROBLEMCLASS_VALUE_TYPE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097207i32);
pub const DEBUG_FLR_XML_STACK_FRAME_TRIAGE_STATUS: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097210i32);
pub const DEBUG_FLR_XML_SYSTEMINFO: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097226i32);
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMANUFACTURER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097227i32);
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMARKER: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097229i32);
pub const DEBUG_FLR_XML_SYSTEMINFO_SYSTEMMODEL: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(2097228i32);
pub const DEBUG_FLR_XPROC_DUMP_AVAILABLE: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048592i32);
pub const DEBUG_FLR_XPROC_HANG: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(1048588i32);
pub const DEBUG_FLR_ZEROED_STACK: DEBUG_FLR_PARAM_TYPE = DEBUG_FLR_PARAM_TYPE(8194i32);
pub const DEBUG_FORMAT_CAB_SECONDARY_ALL_IMAGES: u32 = 268435456u32;
pub const DEBUG_FORMAT_CAB_SECONDARY_FILES: u32 = 1073741824u32;
pub const DEBUG_FORMAT_DEFAULT: u32 = 0u32;
pub const DEBUG_FORMAT_NO_OVERWRITE: u32 = 2147483648u32;
pub const DEBUG_FORMAT_USER_SMALL_ADD_AVX_XSTATE_CONTEXT: u32 = 131072u32;
pub const DEBUG_FORMAT_USER_SMALL_CODE_SEGMENTS: u32 = 4096u32;
pub const DEBUG_FORMAT_USER_SMALL_DATA_SEGMENTS: u32 = 16u32;
pub const DEBUG_FORMAT_USER_SMALL_FILTER_MEMORY: u32 = 32u32;
pub const DEBUG_FORMAT_USER_SMALL_FILTER_PATHS: u32 = 64u32;
pub const DEBUG_FORMAT_USER_SMALL_FILTER_TRIAGE: u32 = 65536u32;
pub const DEBUG_FORMAT_USER_SMALL_FULL_AUXILIARY_STATE: u32 = 16384u32;
pub const DEBUG_FORMAT_USER_SMALL_FULL_MEMORY: u32 = 1u32;
pub const DEBUG_FORMAT_USER_SMALL_FULL_MEMORY_INFO: u32 = 1024u32;
pub const DEBUG_FORMAT_USER_SMALL_HANDLE_DATA: u32 = 2u32;
pub const DEBUG_FORMAT_USER_SMALL_IGNORE_INACCESSIBLE_MEM: u32 = 134217728u32;
pub const DEBUG_FORMAT_USER_SMALL_INDIRECT_MEMORY: u32 = 8u32;
pub const DEBUG_FORMAT_USER_SMALL_IPT_TRACE: u32 = 262144u32;
pub const DEBUG_FORMAT_USER_SMALL_MODULE_HEADERS: u32 = 32768u32;
pub const DEBUG_FORMAT_USER_SMALL_NO_AUXILIARY_STATE: u32 = 8192u32;
pub const DEBUG_FORMAT_USER_SMALL_NO_OPTIONAL_DATA: u32 = 512u32;
pub const DEBUG_FORMAT_USER_SMALL_PRIVATE_READ_WRITE_MEMORY: u32 = 256u32;
pub const DEBUG_FORMAT_USER_SMALL_PROCESS_THREAD_DATA: u32 = 128u32;
pub const DEBUG_FORMAT_USER_SMALL_SCAN_PARTIAL_PAGES: u32 = 268435456u32;
pub const DEBUG_FORMAT_USER_SMALL_THREAD_INFO: u32 = 2048u32;
pub const DEBUG_FORMAT_USER_SMALL_UNLOADED_MODULES: u32 = 4u32;
pub const DEBUG_FORMAT_WRITE_CAB: u32 = 536870912u32;
pub const DEBUG_FRAME_DEFAULT: u32 = 0u32;
pub const DEBUG_FRAME_IGNORE_INLINE: u32 = 1u32;
pub const DEBUG_GETFNENT_DEFAULT: u32 = 0u32;
pub const DEBUG_GETFNENT_RAW_ENTRY_ONLY: u32 = 1u32;
pub const DEBUG_GETMOD_DEFAULT: u32 = 0u32;
pub const DEBUG_GETMOD_NO_LOADED_MODULES: u32 = 1u32;
pub const DEBUG_GETMOD_NO_UNLOADED_MODULES: u32 = 2u32;
pub const DEBUG_GET_PROC_DEFAULT: u32 = 0u32;
pub const DEBUG_GET_PROC_FULL_MATCH: u32 = 1u32;
pub const DEBUG_GET_PROC_ONLY_MATCH: u32 = 2u32;
pub const DEBUG_GET_PROC_SERVICE_NAME: u32 = 4u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_GET_TEXT_COMPLETIONS_IN {
    pub Flags: u32,
    pub MatchCountLimit: u32,
    pub Reserved: [u64; 3],
}
impl Default for DEBUG_GET_TEXT_COMPLETIONS_IN {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_DOT_COMMAND: u32 = 1u32;
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_EXTENSION_COMMAND: u32 = 2u32;
pub const DEBUG_GET_TEXT_COMPLETIONS_IS_SYMBOL: u32 = 4u32;
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_DOT_COMMANDS: u32 = 1u32;
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_EXTENSION_COMMANDS: u32 = 2u32;
pub const DEBUG_GET_TEXT_COMPLETIONS_NO_SYMBOLS: u32 = 4u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_GET_TEXT_COMPLETIONS_OUT {
    pub Flags: u32,
    pub ReplaceIndex: u32,
    pub MatchCount: u32,
    pub Reserved1: u32,
    pub Reserved2: [u64; 2],
}
impl Default for DEBUG_GET_TEXT_COMPLETIONS_OUT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_GSEL_ALLOW_HIGHER: u32 = 4u32;
pub const DEBUG_GSEL_ALLOW_LOWER: u32 = 2u32;
pub const DEBUG_GSEL_DEFAULT: u32 = 0u32;
pub const DEBUG_GSEL_INLINE_CALLSITE: u32 = 16u32;
pub const DEBUG_GSEL_NEAREST_ONLY: u32 = 8u32;
pub const DEBUG_GSEL_NO_SYMBOL_LOADS: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_HANDLE_DATA_BASIC {
    pub TypeNameSize: u32,
    pub ObjectNameSize: u32,
    pub Attributes: u32,
    pub GrantedAccess: u32,
    pub HandleCount: u32,
    pub PointerCount: u32,
}
pub const DEBUG_HANDLE_DATA_TYPE_ALL_HANDLE_OPERATIONS: u32 = 10u32;
pub const DEBUG_HANDLE_DATA_TYPE_BASIC: u32 = 0u32;
pub const DEBUG_HANDLE_DATA_TYPE_HANDLE_COUNT: u32 = 3u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_EVENT_1: u32 = 13u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_MUTANT_1: u32 = 7u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_MUTANT_2: u32 = 8u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_PROCESS_1: u32 = 11u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_PROCESS_2: u32 = 12u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_SECTION_1: u32 = 14u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_SEMAPHORE_1: u32 = 15u32;
pub const DEBUG_HANDLE_DATA_TYPE_MINI_THREAD_1: u32 = 6u32;
pub const DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME: u32 = 2u32;
pub const DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME_WIDE: u32 = 5u32;
pub const DEBUG_HANDLE_DATA_TYPE_PER_HANDLE_OPERATIONS: u32 = 9u32;
pub const DEBUG_HANDLE_DATA_TYPE_TYPE_NAME: u32 = 1u32;
pub const DEBUG_HANDLE_DATA_TYPE_TYPE_NAME_WIDE: u32 = 4u32;
pub const DEBUG_INTERRUPT_ACTIVE: u32 = 0u32;
pub const DEBUG_INTERRUPT_EXIT: u32 = 2u32;
pub const DEBUG_INTERRUPT_PASSIVE: u32 = 1u32;
pub const DEBUG_IOUTPUT_ADDR_TRANSLATE: u32 = 134217728u32;
pub const DEBUG_IOUTPUT_BREAKPOINT: u32 = 536870912u32;
pub const DEBUG_IOUTPUT_EVENT: u32 = 268435456u32;
pub const DEBUG_IOUTPUT_KD_PROTOCOL: u32 = 2147483648u32;
pub const DEBUG_IOUTPUT_REMOTING: u32 = 1073741824u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for DEBUG_IRP_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_IRP_STACK_INFO {
    pub Major: u8,
    pub Minor: u8,
    pub DeviceObject: u64,
    pub FileObject: u64,
    pub CompletionRoutine: u64,
    pub StackAddress: u64,
}
pub const DEBUG_KERNEL_ACTIVE_DUMP: u32 = 1030u32;
pub const DEBUG_KERNEL_CONNECTION: u32 = 0u32;
pub const DEBUG_KERNEL_DUMP: u32 = 1025u32;
pub const DEBUG_KERNEL_EXDI_DRIVER: u32 = 2u32;
pub const DEBUG_KERNEL_FULL_DUMP: u32 = 1026u32;
pub const DEBUG_KERNEL_IDNA: u32 = 3u32;
pub const DEBUG_KERNEL_INSTALL_DRIVER: u32 = 4u32;
pub const DEBUG_KERNEL_LOCAL: u32 = 1u32;
pub const DEBUG_KERNEL_REPT: u32 = 5u32;
pub const DEBUG_KERNEL_SMALL_DUMP: u32 = 1024u32;
pub const DEBUG_KERNEL_TRACE_LOG: u32 = 1028u32;
pub const DEBUG_KNOWN_STRUCT_GET_NAMES: u32 = 1u32;
pub const DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT: u32 = 2u32;
pub const DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME: u32 = 3u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_BREAKPOINT {
    pub Id: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_EXCEPTION {
    pub ExceptionRecord: super::EXCEPTION_RECORD64,
    pub FirstChance: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
    pub ExitCode: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
    pub ExitCode: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
    pub Base: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_SERVICE_EXCEPTION {
    pub Kind: u32,
    pub DataSize: u32,
    pub Address: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
    pub Error: u32,
    pub Level: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
    pub Base: u64,
}
pub const DEBUG_LEVEL_ASSEMBLY: u32 = 1u32;
pub const DEBUG_LEVEL_SOURCE: u32 = 0u32;
pub const DEBUG_LIVE_USER_NON_INVASIVE: u32 = 33u32;
pub const DEBUG_LOG_APPEND: u32 = 1u32;
pub const DEBUG_LOG_DEFAULT: u32 = 0u32;
pub const DEBUG_LOG_DML: u32 = 4u32;
pub const DEBUG_LOG_UNICODE: u32 = 2u32;
pub const DEBUG_MANAGED_ALLOWED: u32 = 1u32;
pub const DEBUG_MANAGED_DISABLED: u32 = 0u32;
pub const DEBUG_MANAGED_DLL_LOADED: u32 = 2u32;
pub const DEBUG_MANRESET_DEFAULT: u32 = 0u32;
pub const DEBUG_MANRESET_LOAD_DLL: u32 = 1u32;
pub const DEBUG_MANSTR_LOADED_SUPPORT_DLL: u32 = 1u32;
pub const DEBUG_MANSTR_LOAD_STATUS: u32 = 2u32;
pub const DEBUG_MANSTR_NONE: u32 = 0u32;
pub const DEBUG_MODNAME_IMAGE: u32 = 0u32;
pub const DEBUG_MODNAME_LOADED_IMAGE: u32 = 2u32;
pub const DEBUG_MODNAME_MAPPED_IMAGE: u32 = 4u32;
pub const DEBUG_MODNAME_MODULE: u32 = 1u32;
pub const DEBUG_MODNAME_SYMBOL_FILE: u32 = 3u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_MODULE_AND_ID {
    pub ModuleBase: u64,
    pub Id: u64,
}
pub const DEBUG_MODULE_EXE_MODULE: u32 = 4u32;
pub const DEBUG_MODULE_EXPLICIT: u32 = 8u32;
pub const DEBUG_MODULE_LOADED: u32 = 0u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for DEBUG_MODULE_PARAMETERS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_MODULE_SECONDARY: u32 = 16u32;
pub const DEBUG_MODULE_SYM_BAD_CHECKSUM: u32 = 65536u32;
pub const DEBUG_MODULE_SYNTHETIC: u32 = 32u32;
pub const DEBUG_MODULE_UNLOADED: u32 = 1u32;
pub const DEBUG_MODULE_USER_MODE: u32 = 2u32;
pub const DEBUG_NOTIFY_SESSION_ACCESSIBLE: u32 = 2u32;
pub const DEBUG_NOTIFY_SESSION_ACTIVE: u32 = 0u32;
pub const DEBUG_NOTIFY_SESSION_INACCESSIBLE: u32 = 3u32;
pub const DEBUG_NOTIFY_SESSION_INACTIVE: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_OFFSET_REGION {
    pub Base: u64,
    pub Size: u64,
}
pub const DEBUG_OFFSINFO_VIRTUAL_SOURCE: u32 = 1u32;
pub const DEBUG_OUTCBF_COMBINED_EXPLICIT_FLUSH: u32 = 1u32;
pub const DEBUG_OUTCBF_DML_HAS_SPECIAL_CHARACTERS: u32 = 4u32;
pub const DEBUG_OUTCBF_DML_HAS_TAGS: u32 = 2u32;
pub const DEBUG_OUTCBI_ANY_FORMAT: u32 = 6u32;
pub const DEBUG_OUTCBI_DML: u32 = 4u32;
pub const DEBUG_OUTCBI_EXPLICIT_FLUSH: u32 = 1u32;
pub const DEBUG_OUTCBI_TEXT: u32 = 2u32;
pub const DEBUG_OUTCB_DML: u32 = 1u32;
pub const DEBUG_OUTCB_EXPLICIT_FLUSH: u32 = 2u32;
pub const DEBUG_OUTCB_TEXT: u32 = 0u32;
pub const DEBUG_OUTCTL_ALL_CLIENTS: u32 = 1u32;
pub const DEBUG_OUTCTL_ALL_OTHER_CLIENTS: u32 = 2u32;
pub const DEBUG_OUTCTL_AMBIENT: u32 = 4294967295u32;
pub const DEBUG_OUTCTL_AMBIENT_DML: u32 = 4294967294u32;
pub const DEBUG_OUTCTL_AMBIENT_TEXT: u32 = 4294967295u32;
pub const DEBUG_OUTCTL_DML: u32 = 32u32;
pub const DEBUG_OUTCTL_IGNORE: u32 = 3u32;
pub const DEBUG_OUTCTL_LOG_ONLY: u32 = 4u32;
pub const DEBUG_OUTCTL_NOT_LOGGED: u32 = 8u32;
pub const DEBUG_OUTCTL_OVERRIDE_MASK: u32 = 16u32;
pub const DEBUG_OUTCTL_SEND_MASK: u32 = 7u32;
pub const DEBUG_OUTCTL_THIS_CLIENT: u32 = 0u32;
pub const DEBUG_OUTPUT_DEBUGGEE: u32 = 128u32;
pub const DEBUG_OUTPUT_DEBUGGEE_PROMPT: u32 = 256u32;
pub const DEBUG_OUTPUT_ERROR: u32 = 2u32;
pub const DEBUG_OUTPUT_EXTENSION_WARNING: u32 = 64u32;
pub const DEBUG_OUTPUT_IDENTITY_DEFAULT: u32 = 0u32;
pub const DEBUG_OUTPUT_NAME_END: windows_core::PCSTR = windows_core::s!("**NAME**");
pub const DEBUG_OUTPUT_NAME_END_T: windows_core::PCWSTR = windows_core::w!("**NAME**");
pub const DEBUG_OUTPUT_NAME_END_WIDE: windows_core::PCWSTR = windows_core::w!("**NAME**");
pub const DEBUG_OUTPUT_NORMAL: u32 = 1u32;
pub const DEBUG_OUTPUT_OFFSET_END: windows_core::PCSTR = windows_core::s!("**OFF**");
pub const DEBUG_OUTPUT_OFFSET_END_T: windows_core::PCWSTR = windows_core::w!("**OFF**");
pub const DEBUG_OUTPUT_OFFSET_END_WIDE: windows_core::PCWSTR = windows_core::w!("**OFF**");
pub const DEBUG_OUTPUT_PROMPT: u32 = 16u32;
pub const DEBUG_OUTPUT_PROMPT_REGISTERS: u32 = 32u32;
pub const DEBUG_OUTPUT_STATUS: u32 = 1024u32;
pub const DEBUG_OUTPUT_SYMBOLS: u32 = 512u32;
pub const DEBUG_OUTPUT_SYMBOLS_DEFAULT: u32 = 0u32;
pub const DEBUG_OUTPUT_SYMBOLS_NO_NAMES: u32 = 1u32;
pub const DEBUG_OUTPUT_SYMBOLS_NO_OFFSETS: u32 = 2u32;
pub const DEBUG_OUTPUT_SYMBOLS_NO_TYPES: u32 = 16u32;
pub const DEBUG_OUTPUT_SYMBOLS_NO_VALUES: u32 = 4u32;
pub const DEBUG_OUTPUT_TYPE_END: windows_core::PCSTR = windows_core::s!("**TYPE**");
pub const DEBUG_OUTPUT_TYPE_END_T: windows_core::PCWSTR = windows_core::w!("**TYPE**");
pub const DEBUG_OUTPUT_TYPE_END_WIDE: windows_core::PCWSTR = windows_core::w!("**TYPE**");
pub const DEBUG_OUTPUT_VALUE_END: windows_core::PCSTR = windows_core::s!("**VALUE**");
pub const DEBUG_OUTPUT_VALUE_END_T: windows_core::PCWSTR = windows_core::w!("**VALUE**");
pub const DEBUG_OUTPUT_VALUE_END_WIDE: windows_core::PCWSTR = windows_core::w!("**VALUE**");
pub const DEBUG_OUTPUT_VERBOSE: u32 = 8u32;
pub const DEBUG_OUTPUT_WARNING: u32 = 4u32;
pub const DEBUG_OUTPUT_XML: u32 = 2048u32;
pub const DEBUG_OUTSYM_ALLOW_DISPLACEMENT: u32 = 4u32;
pub const DEBUG_OUTSYM_DEFAULT: u32 = 0u32;
pub const DEBUG_OUTSYM_FORCE_OFFSET: u32 = 1u32;
pub const DEBUG_OUTSYM_SOURCE_LINE: u32 = 2u32;
pub const DEBUG_OUTTYPE_ADDRESS_AT_END: u32 = 131072u32;
pub const DEBUG_OUTTYPE_ADDRESS_OF_FIELD: u32 = 65536u32;
pub const DEBUG_OUTTYPE_BLOCK_RECURSE: u32 = 2097152u32;
pub const DEBUG_OUTTYPE_COMPACT_OUTPUT: u32 = 8u32;
pub const DEBUG_OUTTYPE_DEFAULT: u32 = 0u32;
pub const DEBUG_OUTTYPE_NO_INDENT: u32 = 1u32;
pub const DEBUG_OUTTYPE_NO_OFFSET: u32 = 2u32;
pub const DEBUG_OUTTYPE_VERBOSE: u32 = 4u32;
pub const DEBUG_OUT_TEXT_REPL_DEFAULT: u32 = 0u32;
pub const DEBUG_PHYSICAL_CACHED: u32 = 1u32;
pub const DEBUG_PHYSICAL_DEFAULT: u32 = 0u32;
pub const DEBUG_PHYSICAL_UNCACHED: u32 = 2u32;
pub const DEBUG_PHYSICAL_WRITE_COMBINED: u32 = 3u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_POOLTAG_DESCRIPTION {
    pub SizeOfStruct: u32,
    pub PoolTag: u32,
    pub Description: [i8; 260],
    pub Binary: [i8; 32],
    pub Owner: [i8; 32],
}
impl Default for DEBUG_POOLTAG_DESCRIPTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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: [i8; 64],
}
impl Default for DEBUG_POOL_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union DEBUG_POOL_DATA_0 {
    pub Anonymous: DEBUG_POOL_DATA_0_0,
    pub AsUlong: u32,
}
impl Default for DEBUG_POOL_DATA_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_POOL_DATA_0_0 {
    pub _bitfield: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEBUG_POOL_REGION(pub i32);
#[repr(C)]
#[derive(Clone, Copy)]
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 Default for DEBUG_PROCESSOR_IDENTIFICATION_ALL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
    pub Type: u32,
    pub Revision: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [i8; 16],
}
impl Default for DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [i8; 16],
}
impl Default for DEBUG_PROCESSOR_IDENTIFICATION_ARM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    pub Model: u32,
    pub Revision: u32,
    pub VendorString: [i8; 16],
}
impl Default for DEBUG_PROCESSOR_IDENTIFICATION_ARM64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    pub Model: u32,
    pub Revision: u32,
    pub Family: u32,
    pub ArchRev: u32,
    pub VendorString: [i8; 16],
}
impl Default for DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    pub Family: u32,
    pub Model: u32,
    pub Stepping: u32,
    pub VendorString: [i8; 16],
}
impl Default for DEBUG_PROCESSOR_IDENTIFICATION_X86 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_PROCESS_DETACH_ON_EXIT: u32 = 1u32;
pub const DEBUG_PROCESS_ONLY_THIS_PROCESS: u32 = 2u32;
pub const DEBUG_PROC_DESC_DEFAULT: u32 = 0u32;
pub const DEBUG_PROC_DESC_NO_COMMAND_LINE: u32 = 8u32;
pub const DEBUG_PROC_DESC_NO_MTS_PACKAGES: u32 = 4u32;
pub const DEBUG_PROC_DESC_NO_PATHS: u32 = 1u32;
pub const DEBUG_PROC_DESC_NO_SERVICES: u32 = 2u32;
pub const DEBUG_PROC_DESC_NO_SESSION_ID: u32 = 16u32;
pub const DEBUG_PROC_DESC_NO_USER_NAME: u32 = 32u32;
pub const DEBUG_PROC_DESC_WITH_ARCHITECTURE: u32 = 128u32;
pub const DEBUG_PROC_DESC_WITH_PACKAGEFAMILY: u32 = 64u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for DEBUG_READ_USER_MINIDUMP_STREAM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_REGISTERS_ALL: u32 = 7u32;
pub const DEBUG_REGISTERS_DEFAULT: u32 = 0u32;
pub const DEBUG_REGISTERS_FLOAT: u32 = 4u32;
pub const DEBUG_REGISTERS_INT32: u32 = 1u32;
pub const DEBUG_REGISTERS_INT64: u32 = 2u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub const DEBUG_REGISTER_SUB_REGISTER: u32 = 1u32;
pub const DEBUG_REGSRC_DEBUGGEE: u32 = 0u32;
pub const DEBUG_REGSRC_EXPLICIT: u32 = 1u32;
pub const DEBUG_REGSRC_FRAME: u32 = 2u32;
pub const DEBUG_REQUEST_ADD_CACHED_SYMBOL_INFO: u32 = 16u32;
pub const DEBUG_REQUEST_CLOSE_TOKEN: u32 = 30u32;
pub const DEBUG_REQUEST_CURRENT_OUTPUT_CALLBACKS_ARE_DML_AWARE: u32 = 19u32;
pub const DEBUG_REQUEST_DUPLICATE_TOKEN: u32 = 28u32;
pub const DEBUG_REQUEST_EXT_TYPED_DATA_ANSI: u32 = 12u32;
pub const DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS: u32 = 4u32;
pub const DEBUG_REQUEST_GET_CACHED_SYMBOL_INFO: u32 = 15u32;
pub const DEBUG_REQUEST_GET_CAPTURED_EVENT_CODE_OFFSET: u32 = 10u32;
pub const DEBUG_REQUEST_GET_DUMP_HEADER: u32 = 21u32;
pub const DEBUG_REQUEST_GET_EXTENSION_SEARCH_PATH_WIDE: u32 = 13u32;
pub const DEBUG_REQUEST_GET_IMAGE_ARCHITECTURE: u32 = 39u32;
pub const DEBUG_REQUEST_GET_INSTRUMENTATION_VERSION: u32 = 37u32;
pub const DEBUG_REQUEST_GET_MODULE_ARCHITECTURE: u32 = 38u32;
pub const DEBUG_REQUEST_GET_OFFSET_UNWIND_INFORMATION: u32 = 20u32;
pub const DEBUG_REQUEST_GET_TEXT_COMPLETIONS_ANSI: u32 = 18u32;
pub const DEBUG_REQUEST_GET_TEXT_COMPLETIONS_WIDE: u32 = 14u32;
pub const DEBUG_REQUEST_GET_WIN32_MAJOR_MINOR_VERSIONS: u32 = 6u32;
pub const DEBUG_REQUEST_INLINE_QUERY: u32 = 35u32;
pub const DEBUG_REQUEST_MIDORI: u32 = 23u32;
pub const DEBUG_REQUEST_MISC_INFORMATION: u32 = 25u32;
pub const DEBUG_REQUEST_OPEN_PROCESS_TOKEN: u32 = 26u32;
pub const DEBUG_REQUEST_OPEN_THREAD_TOKEN: u32 = 27u32;
pub const DEBUG_REQUEST_PROCESS_DESCRIPTORS: u32 = 24u32;
pub const DEBUG_REQUEST_QUERY_INFO_TOKEN: u32 = 29u32;
pub const DEBUG_REQUEST_READ_CAPTURED_EVENT_CODE_STREAM: u32 = 11u32;
pub const DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM: u32 = 7u32;
pub const DEBUG_REQUEST_REMOVE_CACHED_SYMBOL_INFO: u32 = 17u32;
pub const DEBUG_REQUEST_RESUME_THREAD: u32 = 34u32;
pub const DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS: u32 = 5u32;
pub const DEBUG_REQUEST_SET_DUMP_HEADER: u32 = 22u32;
pub const DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE: u32 = 9u32;
pub const DEBUG_REQUEST_SOURCE_PATH_HAS_SOURCE_SERVER: u32 = 0u32;
pub const DEBUG_REQUEST_TARGET_CAN_DETACH: u32 = 8u32;
pub const DEBUG_REQUEST_TARGET_EXCEPTION_CONTEXT: u32 = 1u32;
pub const DEBUG_REQUEST_TARGET_EXCEPTION_RECORD: u32 = 3u32;
pub const DEBUG_REQUEST_TARGET_EXCEPTION_THREAD: u32 = 2u32;
pub const DEBUG_REQUEST_TL_INSTRUMENTATION_AWARE: u32 = 36u32;
pub const DEBUG_REQUEST_WOW_MODULE: u32 = 32u32;
pub const DEBUG_REQUEST_WOW_PROCESS: u32 = 31u32;
pub const DEBUG_SCOPE_GROUP_ALL: u32 = 3u32;
pub const DEBUG_SCOPE_GROUP_ARGUMENTS: u32 = 1u32;
pub const DEBUG_SCOPE_GROUP_BY_DATAMODEL: u32 = 4u32;
pub const DEBUG_SCOPE_GROUP_LOCALS: u32 = 2u32;
pub const DEBUG_SERVERS_ALL: u32 = 3u32;
pub const DEBUG_SERVERS_DEBUGGER: u32 = 1u32;
pub const DEBUG_SERVERS_PROCESS: u32 = 2u32;
pub const DEBUG_SESSION_ACTIVE: u32 = 0u32;
pub const DEBUG_SESSION_END: u32 = 4u32;
pub const DEBUG_SESSION_END_SESSION_ACTIVE_DETACH: u32 = 2u32;
pub const DEBUG_SESSION_END_SESSION_ACTIVE_TERMINATE: u32 = 1u32;
pub const DEBUG_SESSION_END_SESSION_PASSIVE: u32 = 3u32;
pub const DEBUG_SESSION_FAILURE: u32 = 7u32;
pub const DEBUG_SESSION_HIBERNATE: u32 = 6u32;
pub const DEBUG_SESSION_REBOOT: u32 = 5u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: [i8; 64],
    pub BaseBoardProduct: [i8; 64],
    pub BaseBoardVersion: [i8; 64],
    pub BiosReleaseDate: [i8; 64],
    pub BiosVendor: [i8; 64],
    pub BiosVersion: [i8; 64],
    pub SystemFamily: [i8; 64],
    pub SystemManufacturer: [i8; 64],
    pub SystemProductName: [i8; 64],
    pub SystemSKU: [i8; 64],
    pub SystemVersion: [i8; 64],
}
impl Default for DEBUG_SMBIOS_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_SOURCE_IS_STATEMENT: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_SPECIFIC_FILTER_PARAMETERS {
    pub ExecutionOption: u32,
    pub ContinueOption: u32,
    pub TextSize: u32,
    pub CommandSize: u32,
    pub ArgumentSize: u32,
}
pub const DEBUG_SRCFILE_SYMBOL_CHECKSUMINFO: u32 = 2u32;
pub const DEBUG_SRCFILE_SYMBOL_TOKEN: u32 = 0u32;
pub const DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE: u32 = 1u32;
pub const DEBUG_STACK_ARGUMENTS: u32 = 1u32;
pub const DEBUG_STACK_COLUMN_NAMES: u32 = 16u32;
pub const DEBUG_STACK_DML: u32 = 2048u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: windows_core::BOOL,
    pub FrameNumber: u32,
}
impl Default for DEBUG_STACK_FRAME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_STACK_FRAME_ADDRESSES: u32 = 8u32;
pub const DEBUG_STACK_FRAME_ADDRESSES_RA_ONLY: u32 = 256u32;
pub const DEBUG_STACK_FRAME_ARCH: u32 = 16384u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: windows_core::BOOL,
    pub FrameNumber: u32,
    pub InlineFrameContext: u32,
    pub Reserved1: u32,
}
impl Default for DEBUG_STACK_FRAME_EX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_STACK_FRAME_MEMORY_USAGE: u32 = 512u32;
pub const DEBUG_STACK_FRAME_NUMBERS: u32 = 64u32;
pub const DEBUG_STACK_FRAME_OFFSETS: u32 = 4096u32;
pub const DEBUG_STACK_FUNCTION_INFO: u32 = 2u32;
pub const DEBUG_STACK_NONVOLATILE_REGISTERS: u32 = 32u32;
pub const DEBUG_STACK_PARAMETERS: u32 = 128u32;
pub const DEBUG_STACK_PARAMETERS_NEWLINE: u32 = 1024u32;
pub const DEBUG_STACK_PROVIDER: u32 = 8192u32;
pub const DEBUG_STACK_SOURCE_LINE: u32 = 4u32;
pub const DEBUG_STATUS_BREAK: u32 = 6u32;
pub const DEBUG_STATUS_GO: u32 = 1u32;
pub const DEBUG_STATUS_GO_HANDLED: u32 = 2u32;
pub const DEBUG_STATUS_GO_NOT_HANDLED: u32 = 3u32;
pub const DEBUG_STATUS_IGNORE_EVENT: u32 = 9u32;
pub const DEBUG_STATUS_INSIDE_WAIT: u64 = 4294967296u64;
pub const DEBUG_STATUS_MASK: u32 = 31u32;
pub const DEBUG_STATUS_NO_CHANGE: u32 = 0u32;
pub const DEBUG_STATUS_NO_DEBUGGEE: u32 = 7u32;
pub const DEBUG_STATUS_OUT_OF_SYNC: u32 = 15u32;
pub const DEBUG_STATUS_RESTART_REQUESTED: u32 = 10u32;
pub const DEBUG_STATUS_REVERSE_GO: u32 = 11u32;
pub const DEBUG_STATUS_REVERSE_STEP_BRANCH: u32 = 12u32;
pub const DEBUG_STATUS_REVERSE_STEP_INTO: u32 = 14u32;
pub const DEBUG_STATUS_REVERSE_STEP_OVER: u32 = 13u32;
pub const DEBUG_STATUS_STEP_BRANCH: u32 = 8u32;
pub const DEBUG_STATUS_STEP_INTO: u32 = 5u32;
pub const DEBUG_STATUS_STEP_OVER: u32 = 4u32;
pub const DEBUG_STATUS_TIMEOUT: u32 = 17u32;
pub const DEBUG_STATUS_WAIT_INPUT: u32 = 16u32;
pub const DEBUG_STATUS_WAIT_TIMEOUT: u64 = 8589934592u64;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub const DEBUG_SYMBOL_EXPANDED: u32 = 16u32;
pub const DEBUG_SYMBOL_EXPANSION_LEVEL_MASK: u32 = 15u32;
pub const DEBUG_SYMBOL_IS_ARGUMENT: u32 = 256u32;
pub const DEBUG_SYMBOL_IS_ARRAY: u32 = 64u32;
pub const DEBUG_SYMBOL_IS_FLOAT: u32 = 128u32;
pub const DEBUG_SYMBOL_IS_LOCAL: u32 = 512u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_SYMBOL_PARAMETERS {
    pub Module: u64,
    pub TypeId: u32,
    pub ParentSymbol: u32,
    pub SubElements: u32,
    pub Flags: u32,
    pub Reserved: u64,
}
pub const DEBUG_SYMBOL_READ_ONLY: u32 = 32u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub const DEBUG_SYMENT_IS_CODE: u32 = 1u32;
pub const DEBUG_SYMENT_IS_DATA: u32 = 2u32;
pub const DEBUG_SYMENT_IS_LOCAL: u32 = 8u32;
pub const DEBUG_SYMENT_IS_MANAGED: u32 = 16u32;
pub const DEBUG_SYMENT_IS_PARAMETER: u32 = 4u32;
pub const DEBUG_SYMENT_IS_SYNTHETIC: u32 = 32u32;
pub const DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE: u32 = 0u32;
pub const DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS: u32 = 3u32;
pub const DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE: u32 = 2u32;
pub const DEBUG_SYMINFO_IMAGEHLP_MODULEW64: u32 = 1u32;
pub const DEBUG_SYMTYPE_CODEVIEW: u32 = 2u32;
pub const DEBUG_SYMTYPE_COFF: u32 = 1u32;
pub const DEBUG_SYMTYPE_DEFERRED: u32 = 5u32;
pub const DEBUG_SYMTYPE_DIA: u32 = 7u32;
pub const DEBUG_SYMTYPE_EXPORT: u32 = 4u32;
pub const DEBUG_SYMTYPE_NONE: u32 = 0u32;
pub const DEBUG_SYMTYPE_PDB: u32 = 3u32;
pub const DEBUG_SYMTYPE_SYM: u32 = 6u32;
pub const DEBUG_SYSOBJINFO_CURRENT_PROCESS_COOKIE: u32 = 2u32;
pub const DEBUG_SYSOBJINFO_THREAD_BASIC_INFORMATION: u32 = 0u32;
pub const DEBUG_SYSOBJINFO_THREAD_NAME_WIDE: u32 = 1u32;
pub const DEBUG_SYSVERSTR_BUILD: u32 = 1u32;
pub const DEBUG_SYSVERSTR_SERVICE_PACK: u32 = 0u32;
pub const DEBUG_TBINFO_AFFINITY: u32 = 32u32;
pub const DEBUG_TBINFO_ALL: u32 = 63u32;
pub const DEBUG_TBINFO_EXIT_STATUS: u32 = 1u32;
pub const DEBUG_TBINFO_PRIORITY: u32 = 4u32;
pub const DEBUG_TBINFO_PRIORITY_CLASS: u32 = 2u32;
pub const DEBUG_TBINFO_START_OFFSET: u32 = 16u32;
pub const DEBUG_TBINFO_TIMES: u32 = 8u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_TRIAGE_FOLLOWUP_INFO {
    pub SizeOfStruct: u32,
    pub OwnerNameSize: u32,
    pub OwnerName: windows_core::PSTR,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for DEBUG_TYPED_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEBUG_TYPED_DATA_IS_IN_MEMORY: u32 = 1u32;
pub const DEBUG_TYPED_DATA_PHYSICAL_CACHED: u32 = 4u32;
pub const DEBUG_TYPED_DATA_PHYSICAL_DEFAULT: u32 = 2u32;
pub const DEBUG_TYPED_DATA_PHYSICAL_MEMORY: u32 = 14u32;
pub const DEBUG_TYPED_DATA_PHYSICAL_UNCACHED: u32 = 6u32;
pub const DEBUG_TYPED_DATA_PHYSICAL_WRITE_COMBINED: u32 = 8u32;
pub const DEBUG_TYPEOPTS_FORCERADIX_OUTPUT: u32 = 4u32;
pub const DEBUG_TYPEOPTS_LONGSTATUS_DISPLAY: u32 = 2u32;
pub const DEBUG_TYPEOPTS_MATCH_MAXSIZE: u32 = 8u32;
pub const DEBUG_TYPEOPTS_UNICODE_DISPLAY: u32 = 1u32;
pub const DEBUG_USER_WINDOWS_DUMP: u32 = 1025u32;
pub const DEBUG_USER_WINDOWS_DUMP_WINDOWS_CE: u32 = 1029u32;
pub const DEBUG_USER_WINDOWS_IDNA: u32 = 2u32;
pub const DEBUG_USER_WINDOWS_PROCESS: u32 = 0u32;
pub const DEBUG_USER_WINDOWS_PROCESS_SERVER: u32 = 1u32;
pub const DEBUG_USER_WINDOWS_REPT: u32 = 3u32;
pub const DEBUG_USER_WINDOWS_SMALL_DUMP: u32 = 1024u32;
#[repr(C)]
#[derive(Clone, Copy)]
pub struct DEBUG_VALUE {
    pub Anonymous: DEBUG_VALUE_0,
    pub TailOfRawBytes: u32,
    pub Type: u32,
}
impl Default for DEBUG_VALUE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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_1,
    pub F128Parts64: DEBUG_VALUE_0_2,
    pub RawBytes: [u8; 24],
}
impl Default for DEBUG_VALUE_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_VALUE_0_0 {
    pub I64: u64,
    pub Nat: windows_core::BOOL,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_VALUE_0_2 {
    pub LowPart: u64,
    pub HighPart: i64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DEBUG_VALUE_0_1 {
    pub LowPart: u32,
    pub HighPart: u32,
}
pub const DEBUG_VALUE_FLOAT128: u32 = 9u32;
pub const DEBUG_VALUE_FLOAT32: u32 = 5u32;
pub const DEBUG_VALUE_FLOAT64: u32 = 6u32;
pub const DEBUG_VALUE_FLOAT80: u32 = 7u32;
pub const DEBUG_VALUE_FLOAT82: u32 = 8u32;
pub const DEBUG_VALUE_INT16: u32 = 2u32;
pub const DEBUG_VALUE_INT32: u32 = 3u32;
pub const DEBUG_VALUE_INT64: u32 = 4u32;
pub const DEBUG_VALUE_INT8: u32 = 1u32;
pub const DEBUG_VALUE_INVALID: u32 = 0u32;
pub const DEBUG_VALUE_TYPES: u32 = 12u32;
pub const DEBUG_VALUE_VECTOR128: u32 = 11u32;
pub const DEBUG_VALUE_VECTOR64: u32 = 10u32;
pub const DEBUG_VSEARCH_DEFAULT: u32 = 0u32;
pub const DEBUG_VSEARCH_WRITABLE_ONLY: u32 = 1u32;
pub const DEBUG_VSOURCE_DEBUGGEE: u32 = 1u32;
pub const DEBUG_VSOURCE_DUMP_WITHOUT_MEMINFO: u32 = 3u32;
pub const DEBUG_VSOURCE_INVALID: u32 = 0u32;
pub const DEBUG_VSOURCE_MAPPED_IMAGE: u32 = 2u32;
pub const DEBUG_WAIT_DEFAULT: u32 = 0u32;
pub const DISK_READ_0_BYTES: TANALYZE_RETURN = TANALYZE_RETURN(3i32);
pub const DISK_WRITE: TANALYZE_RETURN = TANALYZE_RETURN(4i32);
pub const DUMP_HANDLE_FLAG_CID_TABLE: u32 = 32u32;
pub const DUMP_HANDLE_FLAG_KERNEL_TABLE: u32 = 16u32;
pub const DUMP_HANDLE_FLAG_PRINT_FREE_ENTRY: u32 = 4u32;
pub const DUMP_HANDLE_FLAG_PRINT_OBJECT: u32 = 2u32;
pub const DbgPoolRegionMax: DEBUG_POOL_REGION = DEBUG_POOL_REGION(6i32);
pub const DbgPoolRegionNonPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(3i32);
pub const DbgPoolRegionNonPagedExpansion: DEBUG_POOL_REGION = DEBUG_POOL_REGION(4i32);
pub const DbgPoolRegionPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(2i32);
pub const DbgPoolRegionSessionPaged: DEBUG_POOL_REGION = DEBUG_POOL_REGION(5i32);
pub const DbgPoolRegionSpecial: DEBUG_POOL_REGION = DEBUG_POOL_REGION(1i32);
pub const DbgPoolRegionUnknown: DEBUG_POOL_REGION = DEBUG_POOL_REGION(0i32);
windows_core::imp::define_interface!(DebugBaseEventCallbacks, DebugBaseEventCallbacks_Vtbl, 0);
impl core::ops::Deref for DebugBaseEventCallbacks {
    type Target = IDebugEventCallbacks;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(DebugBaseEventCallbacks, windows_core::IUnknown, IDebugEventCallbacks);
#[repr(C)]
#[doc(hidden)]
pub struct DebugBaseEventCallbacks_Vtbl {
    pub base__: IDebugEventCallbacks_Vtbl,
}
pub trait DebugBaseEventCallbacks_Impl: IDebugEventCallbacks_Impl {}
impl DebugBaseEventCallbacks_Vtbl {
    pub const fn new<Identity: DebugBaseEventCallbacks_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IDebugEventCallbacks_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DebugBaseEventCallbacks as windows_core::Interface>::IID || iid == &<IDebugEventCallbacks as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for DebugBaseEventCallbacks {}
windows_core::imp::define_interface!(DebugBaseEventCallbacksWide, DebugBaseEventCallbacksWide_Vtbl, 0);
impl core::ops::Deref for DebugBaseEventCallbacksWide {
    type Target = IDebugEventCallbacksWide;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(DebugBaseEventCallbacksWide, windows_core::IUnknown, IDebugEventCallbacksWide);
#[repr(C)]
#[doc(hidden)]
pub struct DebugBaseEventCallbacksWide_Vtbl {
    pub base__: IDebugEventCallbacksWide_Vtbl,
}
pub trait DebugBaseEventCallbacksWide_Impl: IDebugEventCallbacksWide_Impl {}
impl DebugBaseEventCallbacksWide_Vtbl {
    pub const fn new<Identity: DebugBaseEventCallbacksWide_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IDebugEventCallbacksWide_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DebugBaseEventCallbacksWide as windows_core::Interface>::IID || iid == &<IDebugEventCallbacksWide as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for DebugBaseEventCallbacksWide {}
pub type ENTRY_CALLBACK = Option<unsafe extern "system" fn(entryaddress: u64, context: *mut core::ffi::c_void) -> windows_core::HRESULT>;
pub const ERROR_DBG_CANCELLED: u32 = 3221226695u32;
pub const ERROR_DBG_TIMEOUT: u32 = 3221226932u32;
pub const EXIT_ON_CONTROLC: u32 = 8u32;
pub const EXIT_STATUS: TANALYZE_RETURN = TANALYZE_RETURN(2i32);
pub const EXTDLL_DATA_QUERY_BUILD_BINDIR: u32 = 1u32;
pub const EXTDLL_DATA_QUERY_BUILD_BINDIR_SYMSRV: u32 = 11u32;
pub const EXTDLL_DATA_QUERY_BUILD_SYMDIR: u32 = 2u32;
pub const EXTDLL_DATA_QUERY_BUILD_SYMDIR_SYMSRV: u32 = 12u32;
pub const EXTDLL_DATA_QUERY_BUILD_WOW64BINDIR: u32 = 4u32;
pub const EXTDLL_DATA_QUERY_BUILD_WOW64BINDIR_SYMSRV: u32 = 14u32;
pub const EXTDLL_DATA_QUERY_BUILD_WOW64SYMDIR: u32 = 3u32;
pub const EXTDLL_DATA_QUERY_BUILD_WOW64SYMDIR_SYMSRV: u32 = 13u32;
pub type EXTDLL_ITERATERTLBALANCEDNODES = Option<unsafe extern "system" fn(rootnode: u64, entryoffset: u32, callback: ENTRY_CALLBACK, callbackcontext: *mut core::ffi::c_void)>;
pub type EXTDLL_QUERYDATABYTAG = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, dwdatatag: u32, pqueryinfo: *const core::ffi::c_void, pdata: *mut u8, cbdata: u32) -> windows_core::HRESULT>;
pub type EXTDLL_QUERYDATABYTAGEX = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, dwdatatag: u32, pqueryinfo: *const core::ffi::c_void, pdata: *mut u8, cbdata: u32, pdataex: *mut u8, cbdataex: u32) -> windows_core::HRESULT>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct EXTSTACKTRACE {
    pub FramePointer: u32,
    pub ProgramCounter: u32,
    pub ReturnAddress: u32,
    pub Args: [u32; 4],
}
impl Default for EXTSTACKTRACE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct EXTSTACKTRACE32 {
    pub FramePointer: u32,
    pub ProgramCounter: u32,
    pub ReturnAddress: u32,
    pub Args: [u32; 4],
}
impl Default for EXTSTACKTRACE32 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct EXTSTACKTRACE64 {
    pub FramePointer: u64,
    pub ProgramCounter: u64,
    pub ReturnAddress: u64,
    pub Args: [u64; 4],
}
impl Default for EXTSTACKTRACE64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub type EXTS_JOB_PROCESS_CALLBACK = Option<unsafe extern "system" fn(job: u64, process: u64, context: *mut core::ffi::c_void) -> bool>;
pub type EXTS_TABLE_ENTRY_CALLBACK = Option<unsafe extern "system" fn(entry: u64, context: *mut core::ffi::c_void) -> bool>;
pub type EXT_ANALYSIS_PLUGIN = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, callphase: FA_EXTENSION_PLUGIN_PHASE, panalysis: windows_core::Ref<'_, IDebugFailureAnalysis2>) -> windows_core::HRESULT>;
pub type EXT_ANALYZER = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, bucketsuffix: windows_core::PSTR, cbbucketsuffix: u32, debugtext: windows_core::PSTR, cbdebugtext: u32, flags: *const u32, panalysis: windows_core::Ref<'_, IDebugFailureAnalysis>) -> windows_core::HRESULT>;
pub const EXT_ANALYZER_FLAG_ID: u32 = 2u32;
pub const EXT_ANALYZER_FLAG_MOD: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct EXT_API_VERSION {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
    pub Revision: u16,
    pub Reserved: u16,
}
pub const EXT_API_VERSION_NUMBER: u32 = 5u32;
pub const EXT_API_VERSION_NUMBER32: u32 = 5u32;
pub const EXT_API_VERSION_NUMBER64: u32 = 6u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for EXT_CAB_XML_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub type EXT_DECODE_ERROR = Option<unsafe extern "system" fn(pdecodeerror: *mut DEBUG_DECODE_ERROR)>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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,
}
impl Default for EXT_FIND_FILE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const EXT_FIND_FILE_ALLOW_GIVEN_PATH: u32 = 1u32;
pub type EXT_GET_DEBUG_FAILURE_ANALYSIS = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, flags: u32, classid: windows_core::GUID, ppanalysis: windows_core::OutRef<'_, IDebugFailureAnalysis2>) -> windows_core::HRESULT>;
pub type EXT_GET_ENVIRONMENT_VARIABLE = Option<unsafe extern "system" fn(peb: u64, variable: windows_core::PCSTR, buffer: windows_core::PCSTR, buffersize: u32) -> windows_core::HRESULT>;
pub type EXT_GET_FAILURE_ANALYSIS = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, flags: u32, ppanalysis: windows_core::OutRef<'_, IDebugFailureAnalysis>) -> windows_core::HRESULT>;
pub type EXT_GET_FA_ENTRIES_DATA = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, count: *mut u32, entries: *mut *mut FA_ENTRY) -> windows_core::HRESULT>;
pub type EXT_GET_HANDLE_TRACE = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, tracetype: u32, startindex: u32, handlevalue: *mut u64, stackfunctions: *mut u64, stacktracesize: u32) -> windows_core::HRESULT>;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct EXT_MATCH_PATTERN_A {
    pub Str: windows_core::PCSTR,
    pub Pattern: windows_core::PCSTR,
    pub CaseSensitive: u32,
}
pub type EXT_RELOAD_TRIAGER = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>) -> windows_core::HRESULT>;
pub type EXT_TARGET_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, ptargetinfo: *mut TARGET_DEBUG_INFO) -> windows_core::HRESULT>;
pub const EXT_TDF_PHYSICAL_CACHED: u32 = 4u32;
pub const EXT_TDF_PHYSICAL_DEFAULT: u32 = 2u32;
pub const EXT_TDF_PHYSICAL_MEMORY: u32 = 14u32;
pub const EXT_TDF_PHYSICAL_UNCACHED: u32 = 6u32;
pub const EXT_TDF_PHYSICAL_WRITE_COMBINED: u32 = 8u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct EXT_TDOP(pub i32);
pub const EXT_TDOP_COPY: EXT_TDOP = EXT_TDOP(0i32);
pub const EXT_TDOP_COUNT: EXT_TDOP = EXT_TDOP(19i32);
pub const EXT_TDOP_EVALUATE: EXT_TDOP = EXT_TDOP(5i32);
pub const EXT_TDOP_GET_ARRAY_ELEMENT: EXT_TDOP = EXT_TDOP(12i32);
pub const EXT_TDOP_GET_DEREFERENCE: EXT_TDOP = EXT_TDOP(13i32);
pub const EXT_TDOP_GET_FIELD: EXT_TDOP = EXT_TDOP(4i32);
pub const EXT_TDOP_GET_FIELD_OFFSET: EXT_TDOP = EXT_TDOP(11i32);
pub const EXT_TDOP_GET_POINTER_TO: EXT_TDOP = EXT_TDOP(16i32);
pub const EXT_TDOP_GET_TYPE_NAME: EXT_TDOP = EXT_TDOP(6i32);
pub const EXT_TDOP_GET_TYPE_SIZE: EXT_TDOP = EXT_TDOP(14i32);
pub const EXT_TDOP_HAS_FIELD: EXT_TDOP = EXT_TDOP(10i32);
pub const EXT_TDOP_OUTPUT_FULL_VALUE: EXT_TDOP = EXT_TDOP(9i32);
pub const EXT_TDOP_OUTPUT_SIMPLE_VALUE: EXT_TDOP = EXT_TDOP(8i32);
pub const EXT_TDOP_OUTPUT_TYPE_DEFINITION: EXT_TDOP = EXT_TDOP(15i32);
pub const EXT_TDOP_OUTPUT_TYPE_NAME: EXT_TDOP = EXT_TDOP(7i32);
pub const EXT_TDOP_RELEASE: EXT_TDOP = EXT_TDOP(1i32);
pub const EXT_TDOP_SET_FROM_EXPR: EXT_TDOP = EXT_TDOP(2i32);
pub const EXT_TDOP_SET_FROM_TYPE_ID_AND_U64: EXT_TDOP = EXT_TDOP(17i32);
pub const EXT_TDOP_SET_FROM_U64_EXPR: EXT_TDOP = EXT_TDOP(3i32);
pub const EXT_TDOP_SET_PTR_FROM_TYPE_ID_AND_U64: EXT_TDOP = EXT_TDOP(18i32);
pub type EXT_TRIAGE_FOLLOWUP = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, symbolname: windows_core::PCSTR, ownerinfo: *mut DEBUG_TRIAGE_FOLLOWUP_INFO) -> u32>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for EXT_TYPED_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub type EXT_XML_DATA = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient4>, pxmpdata: *mut EXT_CAB_XML_DATA) -> windows_core::HRESULT>;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ErrorClass(pub i32);
pub const ErrorClassError: ErrorClass = ErrorClass(1i32);
pub const ErrorClassWarning: ErrorClass = ErrorClass(0i32);
pub const FAILURE_ANALYSIS_ASSUME_HANG: u32 = 4u32;
pub const FAILURE_ANALYSIS_AUTOBUG_PROCESSING: u32 = 64u32;
pub const FAILURE_ANALYSIS_AUTOSET_SYMPATH: u32 = 16384u32;
pub const FAILURE_ANALYSIS_CALLSTACK_XML: u32 = 256u32;
pub const FAILURE_ANALYSIS_CALLSTACK_XML_FULL_SOURCE_INFO: u32 = 16777216u32;
pub const FAILURE_ANALYSIS_CREATE_INSTANCE: u32 = 1048576u32;
pub const FAILURE_ANALYSIS_EXCEPTION_AS_HANG: u32 = 32u32;
pub const FAILURE_ANALYSIS_HEAP_CORRUPTION_BLAME_FUNCTION: u32 = 33554432u32;
pub const FAILURE_ANALYSIS_IGNORE_BREAKIN: u32 = 8u32;
pub const FAILURE_ANALYSIS_LIVE_DEBUG_HOLD_CHECK: u32 = 2097152u32;
pub const FAILURE_ANALYSIS_MODULE_INFO_XML: u32 = 4096u32;
pub const FAILURE_ANALYSIS_MULTI_TARGET: u32 = 131072u32;
pub const FAILURE_ANALYSIS_NO_DB_LOOKUP: u32 = 1u32;
pub const FAILURE_ANALYSIS_NO_IMAGE_CORRUPTION: u32 = 8192u32;
pub const FAILURE_ANALYSIS_PERMIT_HEAP_ACCESS_VIOLATIONS: u32 = 67108864u32;
pub const FAILURE_ANALYSIS_REGISTRY_DATA: u32 = 512u32;
pub const FAILURE_ANALYSIS_SET_FAILURE_CONTEXT: u32 = 16u32;
pub const FAILURE_ANALYSIS_SHOW_SOURCE: u32 = 262144u32;
pub const FAILURE_ANALYSIS_SHOW_WCT_STACKS: u32 = 524288u32;
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES: u32 = 2048u32;
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES_ALL: u32 = 32768u32;
pub const FAILURE_ANALYSIS_USER_ATTRIBUTES_FRAMES: u32 = 65536u32;
pub const FAILURE_ANALYSIS_VERBOSE: u32 = 2u32;
pub const FAILURE_ANALYSIS_WMI_QUERY_DATA: u32 = 1024u32;
pub const FAILURE_ANALYSIS_XML_FILE_OUTPUT: u32 = 4194304u32;
pub const FAILURE_ANALYSIS_XML_OUTPUT: u32 = 128u32;
pub const FAILURE_ANALYSIS_XSD_VERIFY: u32 = 8388608u32;
pub const FAILURE_ANALYSIS_XSLT_FILE_INPUT: u32 = 268435456u32;
pub const FAILURE_ANALYSIS_XSLT_FILE_OUTPUT: u32 = 536870912u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct FA_ENTRY {
    pub Tag: DEBUG_FLR_PARAM_TYPE,
    pub FullSize: u16,
    pub DataSize: u16,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FA_ENTRY_TYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FA_EXTENSION_PLUGIN_PHASE(pub i32);
pub const FA_PLUGIN_INITIALIZATION: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(1i32);
pub const FA_PLUGIN_POST_BUCKETING: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(8i32);
pub const FA_PLUGIN_PRE_BUCKETING: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(4i32);
pub const FA_PLUGIN_STACK_ANALYSIS: FA_EXTENSION_PLUGIN_PHASE = FA_EXTENSION_PLUGIN_PHASE(2i32);
pub const FIELDS_DID_NOT_MATCH: u32 = 4u32;
#[repr(C)]
#[derive(Clone, Copy)]
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 Default for FIELD_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union FIELD_INFO_0 {
    pub fieldCallBack: *mut core::ffi::c_void,
    pub pBuffer: *mut core::ffi::c_void,
}
impl Default for FIELD_INFO_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct FIELD_INFO_1 {
    pub Position: u16,
    pub Size: u16,
}
pub const FormatBSTRString: PreferredFormat = PreferredFormat(8i32);
pub const FormatEnumNameOnly: PreferredFormat = PreferredFormat(12i32);
pub const FormatEscapedStringWithQuote: PreferredFormat = PreferredFormat(13i32);
pub const FormatHString: PreferredFormat = PreferredFormat(10i32);
pub const FormatNone: PreferredFormat = PreferredFormat(0i32);
pub const FormatQuotedHString: PreferredFormat = PreferredFormat(9i32);
pub const FormatQuotedString: PreferredFormat = PreferredFormat(2i32);
pub const FormatQuotedUTF32String: PreferredFormat = PreferredFormat(15i32);
pub const FormatQuotedUTF8String: PreferredFormat = PreferredFormat(6i32);
pub const FormatQuotedUnicodeString: PreferredFormat = PreferredFormat(4i32);
pub const FormatRaw: PreferredFormat = PreferredFormat(11i32);
pub const FormatSingleCharacter: PreferredFormat = PreferredFormat(1i32);
pub const FormatString: PreferredFormat = PreferredFormat(3i32);
pub const FormatUTF32String: PreferredFormat = PreferredFormat(14i32);
pub const FormatUTF8String: PreferredFormat = PreferredFormat(7i32);
pub const FormatUnicodeString: PreferredFormat = PreferredFormat(5i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct GET_CONTEXT_EX {
    pub Status: u32,
    pub ContextSize: u32,
    pub pContext: *mut core::ffi::c_void,
}
impl Default for GET_CONTEXT_EX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_CURRENT_PROCESS_ADDRESS {
    pub Processor: u32,
    pub CurrentThread: u64,
    pub Address: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_CURRENT_THREAD_ADDRESS {
    pub Processor: u32,
    pub Address: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_EXPRESSION_EX {
    pub Expression: windows_core::PCSTR,
    pub Remainder: windows_core::PCSTR,
    pub Value: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_INPUT_LINE {
    pub Prompt: windows_core::PCSTR,
    pub Buffer: windows_core::PSTR,
    pub BufferSize: u32,
    pub InputSize: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_PEB_ADDRESS {
    pub CurrentThread: u64,
    pub Address: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_SET_SYMPATH {
    pub Args: windows_core::PCSTR,
    pub Result: windows_core::PSTR,
    pub Length: i32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct GET_TEB_ADDRESS {
    pub Address: u64,
}
windows_core::imp::define_interface!(ICodeAddressConcept, ICodeAddressConcept_Vtbl, 0xc7371568_5c78_4a00_a4ab_6ef8823184cb);
windows_core::imp::interface_hierarchy!(ICodeAddressConcept, windows_core::IUnknown);
impl ICodeAddressConcept {
    pub unsafe fn GetContainingSymbol<P0>(&self, pcontextobject: P0) -> windows_core::Result<IDebugHostSymbol>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContainingSymbol)(windows_core::Interface::as_raw(self), pcontextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICodeAddressConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetContainingSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ICodeAddressConcept_Impl: windows_core::IUnknownImpl {
    fn GetContainingSymbol(&self, pcontextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IDebugHostSymbol>;
}
impl ICodeAddressConcept_Vtbl {
    pub const fn new<Identity: ICodeAddressConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetContainingSymbol<Identity: ICodeAddressConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcontextobject: *mut core::ffi::c_void, ppsymbol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICodeAddressConcept_Impl::GetContainingSymbol(this, core::mem::transmute_copy(&pcontextobject)) {
                    Ok(ok__) => {
                        ppsymbol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetContainingSymbol: GetContainingSymbol::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICodeAddressConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICodeAddressConcept {}
windows_core::imp::define_interface!(IComparableConcept, IComparableConcept_Vtbl, 0xa7830646_9f0c_4a31_ba19_503f33e6c8a3);
windows_core::imp::interface_hierarchy!(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::Param<IModelObject>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CompareObjects)(windows_core::Interface::as_raw(self), contextobject.param().abi(), otherobject.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IComparableConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CompareObjects: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
pub trait IComparableConcept_Impl: windows_core::IUnknownImpl {
    fn CompareObjects(&self, contextobject: windows_core::Ref<'_, IModelObject>, otherobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<i32>;
}
impl IComparableConcept_Vtbl {
    pub const fn new<Identity: IComparableConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CompareObjects<Identity: IComparableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, otherobject: *mut core::ffi::c_void, comparisonresult: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IComparableConcept_Impl::CompareObjects(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&otherobject)) {
                    Ok(ok__) => {
                        comparisonresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CompareObjects: CompareObjects::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComparableConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IComparableConcept {}
windows_core::imp::define_interface!(IDataModelConcept, IDataModelConcept_Vtbl, 0xfcb98d1d_1114_4fbf_b24c_effcb5def0d3);
windows_core::imp::interface_hierarchy!(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::Param<IModelObject>,
        P1: windows_core::Param<IDebugHostTypeSignature>,
        P2: windows_core::Param<IDebugHostSymbolEnumerator>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeObject)(windows_core::Interface::as_raw(self), modelobject.param().abi(), matchingtypesignature.param().abi(), wildcardmatches.param().abi()).ok() }
    }
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub InitializeObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelConcept_Impl: windows_core::IUnknownImpl {
    fn InitializeObject(&self, modelobject: windows_core::Ref<'_, IModelObject>, matchingtypesignature: windows_core::Ref<'_, IDebugHostTypeSignature>, wildcardmatches: windows_core::Ref<'_, IDebugHostSymbolEnumerator>) -> windows_core::Result<()>;
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
}
impl IDataModelConcept_Vtbl {
    pub const fn new<Identity: IDataModelConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InitializeObject<Identity: IDataModelConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelConcept_Impl::InitializeObject(this, core::mem::transmute_copy(&modelobject), core::mem::transmute_copy(&matchingtypesignature), core::mem::transmute_copy(&wildcardmatches)).into()
            }
        }
        unsafe extern "system" fn GetName<Identity: IDataModelConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modelname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelConcept_Impl::GetName(this) {
                    Ok(ok__) => {
                        modelname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeObject: InitializeObject::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelConcept {}
windows_core::imp::define_interface!(IDataModelManager, IDataModelManager_Vtbl, 0x73fe19f4_a110_4500_8ed9_3c28896f508c);
windows_core::imp::interface_hierarchy!(IDataModelManager, windows_core::IUnknown);
impl IDataModelManager {
    pub unsafe fn Close(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn CreateNoValue(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateNoValue)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateErrorObject<P1>(&self, hrerror: windows_core::HRESULT, pwszmessage: P1) -> windows_core::Result<IModelObject>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateErrorObject)(windows_core::Interface::as_raw(self), hrerror, pwszmessage.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateTypedObject<P0, P2>(&self, context: P0, objectlocation: Location, objecttype: P2) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P2: windows_core::Param<IDebugHostType>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypedObject)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(objectlocation), objecttype.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateTypedObjectReference<P0, P2>(&self, context: P0, objectlocation: Location, objecttype: P2) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P2: windows_core::Param<IDebugHostType>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypedObjectReference)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(objectlocation), objecttype.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSyntheticObject<P0>(&self, context: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSyntheticObject)(windows_core::Interface::as_raw(self), context.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateDataModelObject<P0>(&self, datamodel: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDataModelConcept>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateDataModelObject)(windows_core::Interface::as_raw(self), datamodel.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn CreateIntrinsicObject(&self, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Variant::VARIANT) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateIntrinsicObject)(windows_core::Interface::as_raw(self), objectkind, core::mem::transmute(intrinsicdata), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn CreateTypedIntrinsicObject<P1>(&self, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: P1) -> windows_core::Result<IModelObject>
    where
        P1: windows_core::Param<IDebugHostType>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypedIntrinsicObject)(windows_core::Interface::as_raw(self), core::mem::transmute(intrinsicdata), r#type.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetModelForTypeSignature<P0>(&self, typesignature: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDebugHostTypeSignature>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModelForTypeSignature)(windows_core::Interface::as_raw(self), typesignature.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetModelForType<P0>(&self, r#type: P0, datamodel: *mut Option<IModelObject>, typesignature: Option<*mut Option<IDebugHostTypeSignature>>, wildcardmatches: Option<*mut Option<IDebugHostSymbolEnumerator>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostType>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModelForType)(windows_core::Interface::as_raw(self), r#type.param().abi(), core::mem::transmute(datamodel), typesignature.unwrap_or(core::mem::zeroed()) as _, wildcardmatches.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn RegisterModelForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostTypeSignature>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).RegisterModelForTypeSignature)(windows_core::Interface::as_raw(self), typesignature.param().abi(), datamodel.param().abi()).ok() }
    }
    pub unsafe fn UnregisterModelForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<IDebugHostTypeSignature>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnregisterModelForTypeSignature)(windows_core::Interface::as_raw(self), datamodel.param().abi(), typesignature.param().abi()).ok() }
    }
    pub unsafe fn RegisterExtensionForTypeSignature<P0, P1>(&self, typesignature: P0, datamodel: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostTypeSignature>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).RegisterExtensionForTypeSignature)(windows_core::Interface::as_raw(self), typesignature.param().abi(), datamodel.param().abi()).ok() }
    }
    pub unsafe fn UnregisterExtensionForTypeSignature<P0, P1>(&self, datamodel: P0, typesignature: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<IDebugHostTypeSignature>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnregisterExtensionForTypeSignature)(windows_core::Interface::as_raw(self), datamodel.param().abi(), typesignature.param().abi()).ok() }
    }
    pub unsafe fn CreateMetadataStore<P0>(&self, parentstore: P0) -> windows_core::Result<IKeyStore>
    where
        P0: windows_core::Param<IKeyStore>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateMetadataStore)(windows_core::Interface::as_raw(self), parentstore.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetRootNamespace(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRootNamespace)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RegisterNamedModel<P0, P1>(&self, modelname: P0, modeobject: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).RegisterNamedModel)(windows_core::Interface::as_raw(self), modelname.param().abi(), modeobject.param().abi()).ok() }
    }
    pub unsafe fn UnregisterNamedModel<P0>(&self, modelname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnregisterNamedModel)(windows_core::Interface::as_raw(self), modelname.param().abi()).ok() }
    }
    pub unsafe fn AcquireNamedModel<P0>(&self, modelname: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AcquireNamedModel)(windows_core::Interface::as_raw(self), modelname.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateNoValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateErrorObject: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateTypedObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateTypedObjectReference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSyntheticObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateDataModelObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub CreateIntrinsicObject: unsafe extern "system" fn(*mut core::ffi::c_void, ModelObjectKind, *const super::super::super::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    CreateIntrinsicObject: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub CreateTypedIntrinsicObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::super::Variant::VARIANT, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    CreateTypedIntrinsicObject: usize,
    pub GetModelForTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetModelForType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterModelForTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnregisterModelForTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterExtensionForTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnregisterExtensionForTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateMetadataStore: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRootNamespace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterNamedModel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnregisterNamedModel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AcquireNamedModel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDataModelManager_Impl: windows_core::IUnknownImpl {
    fn Close(&self) -> windows_core::Result<()>;
    fn CreateNoValue(&self) -> windows_core::Result<IModelObject>;
    fn CreateErrorObject(&self, hrerror: windows_core::HRESULT, pwszmessage: &windows_core::PCWSTR) -> windows_core::Result<IModelObject>;
    fn CreateTypedObject(&self, context: windows_core::Ref<'_, IDebugHostContext>, objectlocation: &Location, objecttype: windows_core::Ref<'_, IDebugHostType>) -> windows_core::Result<IModelObject>;
    fn CreateTypedObjectReference(&self, context: windows_core::Ref<'_, IDebugHostContext>, objectlocation: &Location, objecttype: windows_core::Ref<'_, IDebugHostType>) -> windows_core::Result<IModelObject>;
    fn CreateSyntheticObject(&self, context: windows_core::Ref<'_, IDebugHostContext>) -> windows_core::Result<IModelObject>;
    fn CreateDataModelObject(&self, datamodel: windows_core::Ref<'_, IDataModelConcept>) -> windows_core::Result<IModelObject>;
    fn CreateIntrinsicObject(&self, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Variant::VARIANT) -> windows_core::Result<IModelObject>;
    fn CreateTypedIntrinsicObject(&self, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: windows_core::Ref<'_, IDebugHostType>) -> windows_core::Result<IModelObject>;
    fn GetModelForTypeSignature(&self, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>) -> windows_core::Result<IModelObject>;
    fn GetModelForType(&self, r#type: windows_core::Ref<'_, IDebugHostType>, datamodel: windows_core::OutRef<'_, IModelObject>, typesignature: windows_core::OutRef<'_, IDebugHostTypeSignature>, wildcardmatches: windows_core::OutRef<'_, IDebugHostSymbolEnumerator>) -> windows_core::Result<()>;
    fn RegisterModelForTypeSignature(&self, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>, datamodel: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn UnregisterModelForTypeSignature(&self, datamodel: windows_core::Ref<'_, IModelObject>, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>) -> windows_core::Result<()>;
    fn RegisterExtensionForTypeSignature(&self, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>, datamodel: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn UnregisterExtensionForTypeSignature(&self, datamodel: windows_core::Ref<'_, IModelObject>, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>) -> windows_core::Result<()>;
    fn CreateMetadataStore(&self, parentstore: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<IKeyStore>;
    fn GetRootNamespace(&self) -> windows_core::Result<IModelObject>;
    fn RegisterNamedModel(&self, modelname: &windows_core::PCWSTR, modeobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn UnregisterNamedModel(&self, modelname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AcquireNamedModel(&self, modelname: &windows_core::PCWSTR) -> windows_core::Result<IModelObject>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDataModelManager_Vtbl {
    pub const fn new<Identity: IDataModelManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Close<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::Close(this).into()
            }
        }
        unsafe extern "system" fn CreateNoValue<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateNoValue(this) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateErrorObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hrerror: windows_core::HRESULT, pwszmessage: windows_core::PCWSTR, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateErrorObject(this, core::mem::transmute_copy(&hrerror), core::mem::transmute(&pwszmessage)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypedObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateTypedObject(this, core::mem::transmute_copy(&context), core::mem::transmute(&objectlocation), core::mem::transmute_copy(&objecttype)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypedObjectReference<Identity: IDataModelManager_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateTypedObjectReference(this, core::mem::transmute_copy(&context), core::mem::transmute(&objectlocation), core::mem::transmute_copy(&objecttype)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSyntheticObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateSyntheticObject(this, core::mem::transmute_copy(&context)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateDataModelObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, datamodel: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateDataModelObject(this, core::mem::transmute_copy(&datamodel)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateIntrinsicObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, objectkind: ModelObjectKind, intrinsicdata: *const super::super::super::Variant::VARIANT, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateIntrinsicObject(this, core::mem::transmute_copy(&objectkind), core::mem::transmute_copy(&intrinsicdata)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypedIntrinsicObject<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateTypedIntrinsicObject(this, core::mem::transmute_copy(&intrinsicdata), core::mem::transmute_copy(&r#type)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModelForTypeSignature<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void, datamodel: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::GetModelForTypeSignature(this, core::mem::transmute_copy(&typesignature)) {
                    Ok(ok__) => {
                        datamodel.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModelForType<Identity: IDataModelManager_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::GetModelForType(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&datamodel), core::mem::transmute_copy(&typesignature), core::mem::transmute_copy(&wildcardmatches)).into()
            }
        }
        unsafe extern "system" fn RegisterModelForTypeSignature<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void, datamodel: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::RegisterModelForTypeSignature(this, core::mem::transmute_copy(&typesignature), core::mem::transmute_copy(&datamodel)).into()
            }
        }
        unsafe extern "system" fn UnregisterModelForTypeSignature<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, datamodel: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::UnregisterModelForTypeSignature(this, core::mem::transmute_copy(&datamodel), core::mem::transmute_copy(&typesignature)).into()
            }
        }
        unsafe extern "system" fn RegisterExtensionForTypeSignature<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void, datamodel: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::RegisterExtensionForTypeSignature(this, core::mem::transmute_copy(&typesignature), core::mem::transmute_copy(&datamodel)).into()
            }
        }
        unsafe extern "system" fn UnregisterExtensionForTypeSignature<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, datamodel: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::UnregisterExtensionForTypeSignature(this, core::mem::transmute_copy(&datamodel), core::mem::transmute_copy(&typesignature)).into()
            }
        }
        unsafe extern "system" fn CreateMetadataStore<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, parentstore: *mut core::ffi::c_void, metadatastore: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::CreateMetadataStore(this, core::mem::transmute_copy(&parentstore)) {
                    Ok(ok__) => {
                        metadatastore.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRootNamespace<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rootnamespace: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::GetRootNamespace(this) {
                    Ok(ok__) => {
                        rootnamespace.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterNamedModel<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modelname: windows_core::PCWSTR, modeobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::RegisterNamedModel(this, core::mem::transmute(&modelname), core::mem::transmute_copy(&modeobject)).into()
            }
        }
        unsafe extern "system" fn UnregisterNamedModel<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modelname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelManager_Impl::UnregisterNamedModel(this, core::mem::transmute(&modelname)).into()
            }
        }
        unsafe extern "system" fn AcquireNamedModel<Identity: IDataModelManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modelname: windows_core::PCWSTR, modelobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager_Impl::AcquireNamedModel(this, core::mem::transmute(&modelname)) {
                    Ok(ok__) => {
                        modelobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Close: Close::<Identity, OFFSET>,
            CreateNoValue: CreateNoValue::<Identity, OFFSET>,
            CreateErrorObject: CreateErrorObject::<Identity, OFFSET>,
            CreateTypedObject: CreateTypedObject::<Identity, OFFSET>,
            CreateTypedObjectReference: CreateTypedObjectReference::<Identity, OFFSET>,
            CreateSyntheticObject: CreateSyntheticObject::<Identity, OFFSET>,
            CreateDataModelObject: CreateDataModelObject::<Identity, OFFSET>,
            CreateIntrinsicObject: CreateIntrinsicObject::<Identity, OFFSET>,
            CreateTypedIntrinsicObject: CreateTypedIntrinsicObject::<Identity, OFFSET>,
            GetModelForTypeSignature: GetModelForTypeSignature::<Identity, OFFSET>,
            GetModelForType: GetModelForType::<Identity, OFFSET>,
            RegisterModelForTypeSignature: RegisterModelForTypeSignature::<Identity, OFFSET>,
            UnregisterModelForTypeSignature: UnregisterModelForTypeSignature::<Identity, OFFSET>,
            RegisterExtensionForTypeSignature: RegisterExtensionForTypeSignature::<Identity, OFFSET>,
            UnregisterExtensionForTypeSignature: UnregisterExtensionForTypeSignature::<Identity, OFFSET>,
            CreateMetadataStore: CreateMetadataStore::<Identity, OFFSET>,
            GetRootNamespace: GetRootNamespace::<Identity, OFFSET>,
            RegisterNamedModel: RegisterNamedModel::<Identity, OFFSET>,
            UnregisterNamedModel: UnregisterNamedModel::<Identity, OFFSET>,
            AcquireNamedModel: AcquireNamedModel::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelManager as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDataModelManager {}
windows_core::imp::define_interface!(IDataModelManager2, IDataModelManager2_Vtbl, 0xf412c5ea_2284_4622_a660_a697160d3312);
impl core::ops::Deref for IDataModelManager2 {
    type Target = IDataModelManager;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDataModelManager2, windows_core::IUnknown, IDataModelManager);
impl IDataModelManager2 {
    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::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<IKeyStore>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AcquireSubNamespace)(windows_core::Interface::as_raw(self), modelname.param().abi(), subnamespacemodelname.param().abi(), accessname.param().abi(), metadata.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn CreateTypedIntrinsicObjectEx<P0, P2>(&self, context: P0, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: P2) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P2: windows_core::Param<IDebugHostType>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypedIntrinsicObjectEx)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(intrinsicdata), r#type.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelManager2_Vtbl {
    pub base__: IDataModelManager_Vtbl,
    pub AcquireSubNamespace: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub CreateTypedIntrinsicObjectEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::super::Variant::VARIANT, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    CreateTypedIntrinsicObjectEx: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDataModelManager2_Impl: IDataModelManager_Impl {
    fn AcquireSubNamespace(&self, modelname: &windows_core::PCWSTR, subnamespacemodelname: &windows_core::PCWSTR, accessname: &windows_core::PCWSTR, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<IModelObject>;
    fn CreateTypedIntrinsicObjectEx(&self, context: windows_core::Ref<'_, IDebugHostContext>, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: windows_core::Ref<'_, IDebugHostType>) -> windows_core::Result<IModelObject>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDataModelManager2_Vtbl {
    pub const fn new<Identity: IDataModelManager2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AcquireSubNamespace<Identity: IDataModelManager2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager2_Impl::AcquireSubNamespace(this, core::mem::transmute(&modelname), core::mem::transmute(&subnamespacemodelname), core::mem::transmute(&accessname), core::mem::transmute_copy(&metadata)) {
                    Ok(ok__) => {
                        namespacemodelobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypedIntrinsicObjectEx<Identity: IDataModelManager2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, intrinsicdata: *const super::super::super::Variant::VARIANT, r#type: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelManager2_Impl::CreateTypedIntrinsicObjectEx(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&intrinsicdata), core::mem::transmute_copy(&r#type)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDataModelManager_Vtbl::new::<Identity, OFFSET>(),
            AcquireSubNamespace: AcquireSubNamespace::<Identity, OFFSET>,
            CreateTypedIntrinsicObjectEx: CreateTypedIntrinsicObjectEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelManager2 as windows_core::Interface>::IID || iid == &<IDataModelManager as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDataModelManager2 {}
windows_core::imp::define_interface!(IDataModelNameBinder, IDataModelNameBinder_Vtbl, 0xaf352b7b_8292_4c01_b360_2dc3696c65e7);
windows_core::imp::interface_hierarchy!(IDataModelNameBinder, windows_core::IUnknown);
impl IDataModelNameBinder {
    pub unsafe fn BindValue<P0, P1>(&self, contextobject: P0, name: P1, value: *mut Option<IModelObject>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).BindValue)(windows_core::Interface::as_raw(self), contextobject.param().abi(), name.param().abi(), core::mem::transmute(value), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn BindReference<P0, P1>(&self, contextobject: P0, name: P1, reference: *mut Option<IModelObject>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).BindReference)(windows_core::Interface::as_raw(self), contextobject.param().abi(), name.param().abi(), core::mem::transmute(reference), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EnumerateValues<P0>(&self, contextobject: P0) -> windows_core::Result<IKeyEnumerator>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateValues)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateReferences<P0>(&self, contextobject: P0) -> windows_core::Result<IKeyEnumerator>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateReferences)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelNameBinder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub BindValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BindReference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateReferences: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelNameBinder_Impl: windows_core::IUnknownImpl {
    fn BindValue(&self, contextobject: windows_core::Ref<'_, IModelObject>, name: &windows_core::PCWSTR, value: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn BindReference(&self, contextobject: windows_core::Ref<'_, IModelObject>, name: &windows_core::PCWSTR, reference: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn EnumerateValues(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IKeyEnumerator>;
    fn EnumerateReferences(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IKeyEnumerator>;
}
impl IDataModelNameBinder_Vtbl {
    pub const fn new<Identity: IDataModelNameBinder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn BindValue<Identity: IDataModelNameBinder_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelNameBinder_Impl::BindValue(this, core::mem::transmute_copy(&contextobject), core::mem::transmute(&name), core::mem::transmute_copy(&value), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn BindReference<Identity: IDataModelNameBinder_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelNameBinder_Impl::BindReference(this, core::mem::transmute_copy(&contextobject), core::mem::transmute(&name), core::mem::transmute_copy(&reference), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn EnumerateValues<Identity: IDataModelNameBinder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelNameBinder_Impl::EnumerateValues(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateReferences<Identity: IDataModelNameBinder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelNameBinder_Impl::EnumerateReferences(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BindValue: BindValue::<Identity, OFFSET>,
            BindReference: BindReference::<Identity, OFFSET>,
            EnumerateValues: EnumerateValues::<Identity, OFFSET>,
            EnumerateReferences: EnumerateReferences::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelNameBinder as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelNameBinder {}
windows_core::imp::define_interface!(IDataModelScript, IDataModelScript_Vtbl, 0x7b4d30fc_b14a_49f8_8d87_d9a1480c97f7);
windows_core::imp::interface_hierarchy!(IDataModelScript, windows_core::IUnknown);
impl IDataModelScript {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Rename<P0>(&self, scriptname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Rename)(windows_core::Interface::as_raw(self), scriptname.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Populate<P0>(&self, contentstream: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::super::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).Populate)(windows_core::Interface::as_raw(self), contentstream.param().abi()).ok() }
    }
    pub unsafe fn Execute<P0>(&self, client: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScriptClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn Unlink(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unlink)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsInvocable(&self) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsInvocable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn InvokeMain<P0>(&self, client: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScriptClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).InvokeMain)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScript_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Rename: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Populate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Populate: usize,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Unlink: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsInvocable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub InvokeMain: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataModelScript_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Rename(&self, scriptname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Populate(&self, contentstream: windows_core::Ref<'_, super::super::super::Com::IStream>) -> windows_core::Result<()>;
    fn Execute(&self, client: windows_core::Ref<'_, IDataModelScriptClient>) -> windows_core::Result<()>;
    fn Unlink(&self) -> windows_core::Result<()>;
    fn IsInvocable(&self) -> windows_core::Result<bool>;
    fn InvokeMain(&self, client: windows_core::Ref<'_, IDataModelScriptClient>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDataModelScript_Vtbl {
    pub const fn new<Identity: IDataModelScript_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, scriptname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScript_Impl::GetName(this) {
                    Ok(ok__) => {
                        scriptname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Rename<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, scriptname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScript_Impl::Rename(this, core::mem::transmute(&scriptname)).into()
            }
        }
        unsafe extern "system" fn Populate<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contentstream: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScript_Impl::Populate(this, core::mem::transmute_copy(&contentstream)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScript_Impl::Execute(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn Unlink<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScript_Impl::Unlink(this).into()
            }
        }
        unsafe extern "system" fn IsInvocable<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, isinvocable: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScript_Impl::IsInvocable(this) {
                    Ok(ok__) => {
                        isinvocable.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InvokeMain<Identity: IDataModelScript_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScript_Impl::InvokeMain(this, core::mem::transmute_copy(&client)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            Rename: Rename::<Identity, OFFSET>,
            Populate: Populate::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            Unlink: Unlink::<Identity, OFFSET>,
            IsInvocable: IsInvocable::<Identity, OFFSET>,
            InvokeMain: InvokeMain::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScript as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataModelScript {}
windows_core::imp::define_interface!(IDataModelScriptClient, IDataModelScriptClient_Vtbl, 0x3b362b0e_89f0_46c6_a663_dfdc95194aef);
windows_core::imp::interface_hierarchy!(IDataModelScriptClient, windows_core::IUnknown);
impl IDataModelScriptClient {
    pub unsafe fn ReportError<P2>(&self, errclass: ErrorClass, hrfail: windows_core::HRESULT, message: P2, line: u32, position: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReportError)(windows_core::Interface::as_raw(self), errclass, hrfail, message.param().abi(), line, position).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReportError: unsafe extern "system" fn(*mut core::ffi::c_void, ErrorClass, windows_core::HRESULT, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
}
pub trait IDataModelScriptClient_Impl: windows_core::IUnknownImpl {
    fn ReportError(&self, errclass: ErrorClass, hrfail: windows_core::HRESULT, message: &windows_core::PCWSTR, line: u32, position: u32) -> windows_core::Result<()>;
}
impl IDataModelScriptClient_Vtbl {
    pub const fn new<Identity: IDataModelScriptClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReportError<Identity: IDataModelScriptClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, errclass: ErrorClass, hrfail: windows_core::HRESULT, message: windows_core::PCWSTR, line: u32, position: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptClient_Impl::ReportError(this, core::mem::transmute_copy(&errclass), core::mem::transmute_copy(&hrfail), core::mem::transmute(&message), core::mem::transmute_copy(&line), core::mem::transmute_copy(&position)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ReportError: ReportError::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptClient as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptClient {}
windows_core::imp::define_interface!(IDataModelScriptDebug, IDataModelScriptDebug_Vtbl, 0xde8e0945_9750_4471_ab76_a8f79d6ec350);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebug, windows_core::IUnknown);
impl IDataModelScriptDebug {
    pub unsafe fn GetDebugState(&self) -> ScriptDebugState {
        unsafe { (windows_core::Interface::vtable(self).GetDebugState)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetCurrentPosition(&self, currentposition: *mut ScriptDebugPosition, positionspanend: Option<*mut ScriptDebugPosition>, linetext: Option<*mut windows_core::BSTR>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCurrentPosition)(windows_core::Interface::as_raw(self), currentposition as _, positionspanend.unwrap_or(core::mem::zeroed()) as _, linetext.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetStack(&self) -> windows_core::Result<IDataModelScriptDebugStack> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStack)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetBreakpoint(&self, lineposition: u32, columnposition: u32) -> windows_core::Result<IDataModelScriptDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetBreakpoint)(windows_core::Interface::as_raw(self), lineposition, columnposition, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindBreakpointById(&self, breakpointid: u64) -> windows_core::Result<IDataModelScriptDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindBreakpointById)(windows_core::Interface::as_raw(self), breakpointid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateBreakpoints(&self) -> windows_core::Result<IDataModelScriptDebugBreakpointEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetEventFilter(&self, eventfilter: ScriptDebugEventFilter) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventFilter)(windows_core::Interface::as_raw(self), eventfilter, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEventFilter(&self, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> windows_core::Result<()> {
        unsafe { (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::Param<IDataModelScriptDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartDebugging)(windows_core::Interface::as_raw(self), debugclient.param().abi()).ok() }
    }
    pub unsafe fn StopDebugging<P0>(&self, debugclient: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScriptDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).StopDebugging)(windows_core::Interface::as_raw(self), debugclient.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebug_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDebugState: unsafe extern "system" fn(*mut core::ffi::c_void) -> ScriptDebugState,
    pub GetCurrentPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ScriptDebugPosition, *mut ScriptDebugPosition, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetStack: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEventFilter: unsafe extern "system" fn(*mut core::ffi::c_void, ScriptDebugEventFilter, *mut bool) -> windows_core::HRESULT,
    pub SetEventFilter: unsafe extern "system" fn(*mut core::ffi::c_void, ScriptDebugEventFilter, u8) -> windows_core::HRESULT,
    pub StartDebugging: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StopDebugging: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebug_Impl: windows_core::IUnknownImpl {
    fn GetDebugState(&self) -> ScriptDebugState;
    fn GetCurrentPosition(&self, currentposition: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn GetStack(&self) -> windows_core::Result<IDataModelScriptDebugStack>;
    fn SetBreakpoint(&self, lineposition: u32, columnposition: u32) -> windows_core::Result<IDataModelScriptDebugBreakpoint>;
    fn FindBreakpointById(&self, breakpointid: u64) -> windows_core::Result<IDataModelScriptDebugBreakpoint>;
    fn EnumerateBreakpoints(&self) -> windows_core::Result<IDataModelScriptDebugBreakpointEnumerator>;
    fn GetEventFilter(&self, eventfilter: ScriptDebugEventFilter) -> windows_core::Result<bool>;
    fn SetEventFilter(&self, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> windows_core::Result<()>;
    fn StartDebugging(&self, debugclient: windows_core::Ref<'_, IDataModelScriptDebugClient>) -> windows_core::Result<()>;
    fn StopDebugging(&self, debugclient: windows_core::Ref<'_, IDataModelScriptDebugClient>) -> windows_core::Result<()>;
}
impl IDataModelScriptDebug_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDebugState<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> ScriptDebugState {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebug_Impl::GetDebugState(this)
            }
        }
        unsafe extern "system" fn GetCurrentPosition<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentposition: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebug_Impl::GetCurrentPosition(this, core::mem::transmute_copy(&currentposition), core::mem::transmute_copy(&positionspanend), core::mem::transmute_copy(&linetext)).into()
            }
        }
        unsafe extern "system" fn GetStack<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, stack: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug_Impl::GetStack(this) {
                    Ok(ok__) => {
                        stack.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetBreakpoint<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lineposition: u32, columnposition: u32, breakpoint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug_Impl::SetBreakpoint(this, core::mem::transmute_copy(&lineposition), core::mem::transmute_copy(&columnposition)) {
                    Ok(ok__) => {
                        breakpoint.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindBreakpointById<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breakpointid: u64, breakpoint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug_Impl::FindBreakpointById(this, core::mem::transmute_copy(&breakpointid)) {
                    Ok(ok__) => {
                        breakpoint.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateBreakpoints<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breakpointenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug_Impl::EnumerateBreakpoints(this) {
                    Ok(ok__) => {
                        breakpointenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventFilter<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventfilter: ScriptDebugEventFilter, isbreakenabled: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug_Impl::GetEventFilter(this, core::mem::transmute_copy(&eventfilter)) {
                    Ok(ok__) => {
                        isbreakenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventFilter<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventfilter: ScriptDebugEventFilter, isbreakenabled: u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebug_Impl::SetEventFilter(this, core::mem::transmute_copy(&eventfilter), core::mem::transmute_copy(&isbreakenabled)).into()
            }
        }
        unsafe extern "system" fn StartDebugging<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, debugclient: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebug_Impl::StartDebugging(this, core::mem::transmute_copy(&debugclient)).into()
            }
        }
        unsafe extern "system" fn StopDebugging<Identity: IDataModelScriptDebug_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, debugclient: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebug_Impl::StopDebugging(this, core::mem::transmute_copy(&debugclient)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDebugState: GetDebugState::<Identity, OFFSET>,
            GetCurrentPosition: GetCurrentPosition::<Identity, OFFSET>,
            GetStack: GetStack::<Identity, OFFSET>,
            SetBreakpoint: SetBreakpoint::<Identity, OFFSET>,
            FindBreakpointById: FindBreakpointById::<Identity, OFFSET>,
            EnumerateBreakpoints: EnumerateBreakpoints::<Identity, OFFSET>,
            GetEventFilter: GetEventFilter::<Identity, OFFSET>,
            SetEventFilter: SetEventFilter::<Identity, OFFSET>,
            StartDebugging: StartDebugging::<Identity, OFFSET>,
            StopDebugging: StopDebugging::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebug as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebug {}
windows_core::imp::define_interface!(IDataModelScriptDebug2, IDataModelScriptDebug2_Vtbl, 0xcbb10ed3_839e_426c_9243_e23535c1ae1a);
impl core::ops::Deref for IDataModelScriptDebug2 {
    type Target = IDataModelScriptDebug;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDataModelScriptDebug2, windows_core::IUnknown, IDataModelScriptDebug);
impl IDataModelScriptDebug2 {
    pub unsafe fn SetBreakpointAtFunction<P0>(&self, functionname: P0) -> windows_core::Result<IDataModelScriptDebugBreakpoint>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetBreakpointAtFunction)(windows_core::Interface::as_raw(self), functionname.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebug2_Vtbl {
    pub base__: IDataModelScriptDebug_Vtbl,
    pub SetBreakpointAtFunction: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebug2_Impl: IDataModelScriptDebug_Impl {
    fn SetBreakpointAtFunction(&self, functionname: &windows_core::PCWSTR) -> windows_core::Result<IDataModelScriptDebugBreakpoint>;
}
impl IDataModelScriptDebug2_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebug2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBreakpointAtFunction<Identity: IDataModelScriptDebug2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, functionname: windows_core::PCWSTR, breakpoint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebug2_Impl::SetBreakpointAtFunction(this, core::mem::transmute(&functionname)) {
                    Ok(ok__) => {
                        breakpoint.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IDataModelScriptDebug_Vtbl::new::<Identity, OFFSET>(), SetBreakpointAtFunction: SetBreakpointAtFunction::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebug2 as windows_core::Interface>::IID || iid == &<IDataModelScriptDebug as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebug2 {}
windows_core::imp::define_interface!(IDataModelScriptDebugBreakpoint, IDataModelScriptDebugBreakpoint_Vtbl, 0x6bb27b35_02e6_47cb_90a0_5371244032de);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugBreakpoint, windows_core::IUnknown);
impl IDataModelScriptDebugBreakpoint {
    pub unsafe fn GetId(&self) -> u64 {
        unsafe { (windows_core::Interface::vtable(self).GetId)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn IsEnabled(&self) -> bool {
        unsafe { (windows_core::Interface::vtable(self).IsEnabled)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn Enable(&self) {
        unsafe { (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn Disable(&self) {
        unsafe { (windows_core::Interface::vtable(self).Disable)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn Remove(&self) {
        unsafe { (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: Option<*mut ScriptDebugPosition>, linetext: Option<*mut windows_core::BSTR>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPosition)(windows_core::Interface::as_raw(self), position as _, positionspanend.unwrap_or(core::mem::zeroed()) as _, linetext.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugBreakpoint_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(*mut core::ffi::c_void) -> u64,
    pub IsEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> bool,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void),
    pub Disable: unsafe extern "system" fn(*mut core::ffi::c_void),
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void),
    pub GetPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ScriptDebugPosition, *mut ScriptDebugPosition, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugBreakpoint_Impl: windows_core::IUnknownImpl {
    fn GetId(&self) -> u64;
    fn IsEnabled(&self) -> bool;
    fn Enable(&self);
    fn Disable(&self);
    fn Remove(&self);
    fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut windows_core::BSTR) -> windows_core::Result<()>;
}
impl IDataModelScriptDebugBreakpoint_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetId<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u64 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::GetId(this)
            }
        }
        unsafe extern "system" fn IsEnabled<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> bool {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::IsEnabled(this)
            }
        }
        unsafe extern "system" fn Enable<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::Enable(this)
            }
        }
        unsafe extern "system" fn Disable<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::Disable(this)
            }
        }
        unsafe extern "system" fn Remove<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::Remove(this)
            }
        }
        unsafe extern "system" fn GetPosition<Identity: IDataModelScriptDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpoint_Impl::GetPosition(this, core::mem::transmute_copy(&position), core::mem::transmute_copy(&positionspanend), core::mem::transmute_copy(&linetext)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            IsEnabled: IsEnabled::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            Disable: Disable::<Identity, OFFSET>,
            Remove: Remove::<Identity, OFFSET>,
            GetPosition: GetPosition::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugBreakpoint as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugBreakpoint {}
windows_core::imp::define_interface!(IDataModelScriptDebugBreakpointEnumerator, IDataModelScriptDebugBreakpointEnumerator_Vtbl, 0x39484a75_b4f3_4799_86da_691afa57b299);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugBreakpointEnumerator, windows_core::IUnknown);
impl IDataModelScriptDebugBreakpointEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self) -> windows_core::Result<IDataModelScriptDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugBreakpointEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugBreakpointEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self) -> windows_core::Result<IDataModelScriptDebugBreakpoint>;
}
impl IDataModelScriptDebugBreakpointEnumerator_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugBreakpointEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IDataModelScriptDebugBreakpointEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugBreakpointEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDataModelScriptDebugBreakpointEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breakpoint: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugBreakpointEnumerator_Impl::GetNext(this) {
                    Ok(ok__) => {
                        breakpoint.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugBreakpointEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugBreakpointEnumerator {}
windows_core::imp::define_interface!(IDataModelScriptDebugClient, IDataModelScriptDebugClient_Vtbl, 0x53159b6d_d4c4_471b_a863_5b110ca800ca);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugClient, windows_core::IUnknown);
impl IDataModelScriptDebugClient {
    pub unsafe fn NotifyDebugEvent<P1, P2>(&self, peventinfo: *const ScriptDebugEventInformation, pscript: P1, peventdataobject: P2, resumeeventkind: *mut ScriptExecutionKind) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IDataModelScript>,
        P2: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).NotifyDebugEvent)(windows_core::Interface::as_raw(self), peventinfo, pscript.param().abi(), peventdataobject.param().abi(), resumeeventkind as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub NotifyDebugEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const ScriptDebugEventInformation, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut ScriptExecutionKind) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugClient_Impl: windows_core::IUnknownImpl {
    fn NotifyDebugEvent(&self, peventinfo: *const ScriptDebugEventInformation, pscript: windows_core::Ref<'_, IDataModelScript>, peventdataobject: windows_core::Ref<'_, IModelObject>, resumeeventkind: *mut ScriptExecutionKind) -> windows_core::Result<()>;
}
impl IDataModelScriptDebugClient_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn NotifyDebugEvent<Identity: IDataModelScriptDebugClient_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugClient_Impl::NotifyDebugEvent(this, core::mem::transmute_copy(&peventinfo), core::mem::transmute_copy(&pscript), core::mem::transmute_copy(&peventdataobject), core::mem::transmute_copy(&resumeeventkind)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), NotifyDebugEvent: NotifyDebugEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugClient as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugClient {}
windows_core::imp::define_interface!(IDataModelScriptDebugStack, IDataModelScriptDebugStack_Vtbl, 0x051364dd_e449_443e_9762_fe578f4a5473);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugStack, windows_core::IUnknown);
impl IDataModelScriptDebugStack {
    pub unsafe fn GetFrameCount(&self) -> u64 {
        unsafe { (windows_core::Interface::vtable(self).GetFrameCount)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetStackFrame(&self, framenumber: u64) -> windows_core::Result<IDataModelScriptDebugStackFrame> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStackFrame)(windows_core::Interface::as_raw(self), framenumber, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugStack_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFrameCount: unsafe extern "system" fn(*mut core::ffi::c_void) -> u64,
    pub GetStackFrame: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugStack_Impl: windows_core::IUnknownImpl {
    fn GetFrameCount(&self) -> u64;
    fn GetStackFrame(&self, framenumber: u64) -> windows_core::Result<IDataModelScriptDebugStackFrame>;
}
impl IDataModelScriptDebugStack_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugStack_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFrameCount<Identity: IDataModelScriptDebugStack_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u64 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugStack_Impl::GetFrameCount(this)
            }
        }
        unsafe extern "system" fn GetStackFrame<Identity: IDataModelScriptDebugStack_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, framenumber: u64, stackframe: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStack_Impl::GetStackFrame(this, core::mem::transmute_copy(&framenumber)) {
                    Ok(ok__) => {
                        stackframe.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFrameCount: GetFrameCount::<Identity, OFFSET>,
            GetStackFrame: GetStackFrame::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugStack as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugStack {}
windows_core::imp::define_interface!(IDataModelScriptDebugStackFrame, IDataModelScriptDebugStackFrame_Vtbl, 0xdec6ed5e_6360_4941_ab4c_a26409de4f82);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugStackFrame, windows_core::IUnknown);
impl IDataModelScriptDebugStackFrame {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: Option<*mut ScriptDebugPosition>, linetext: Option<*mut windows_core::BSTR>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPosition)(windows_core::Interface::as_raw(self), position as _, positionspanend.unwrap_or(core::mem::zeroed()) as _, linetext.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsTransitionPoint(&self) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsTransitionPoint)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTransition(&self, transitionscript: *mut Option<IDataModelScript>, istransitioncontiguous: *mut bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTransition)(windows_core::Interface::as_raw(self), core::mem::transmute(transitionscript), istransitioncontiguous as _).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, pwszexpression: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), pwszexpression.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateLocals(&self) -> windows_core::Result<IDataModelScriptDebugVariableSetEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateLocals)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateArguments(&self) -> windows_core::Result<IDataModelScriptDebugVariableSetEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateArguments)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugStackFrame_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ScriptDebugPosition, *mut ScriptDebugPosition, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsTransitionPoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub GetTransition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateLocals: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateArguments: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugStackFrame_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetPosition(&self, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut windows_core::BSTR) -> windows_core::Result<()>;
    fn IsTransitionPoint(&self) -> windows_core::Result<bool>;
    fn GetTransition(&self, transitionscript: windows_core::OutRef<'_, IDataModelScript>, istransitioncontiguous: *mut bool) -> windows_core::Result<()>;
    fn Evaluate(&self, pwszexpression: &windows_core::PCWSTR) -> windows_core::Result<IModelObject>;
    fn EnumerateLocals(&self) -> windows_core::Result<IDataModelScriptDebugVariableSetEnumerator>;
    fn EnumerateArguments(&self) -> windows_core::Result<IDataModelScriptDebugVariableSetEnumerator>;
}
impl IDataModelScriptDebugStackFrame_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStackFrame_Impl::GetName(this) {
                    Ok(ok__) => {
                        name.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPosition<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: *mut ScriptDebugPosition, positionspanend: *mut ScriptDebugPosition, linetext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugStackFrame_Impl::GetPosition(this, core::mem::transmute_copy(&position), core::mem::transmute_copy(&positionspanend), core::mem::transmute_copy(&linetext)).into()
            }
        }
        unsafe extern "system" fn IsTransitionPoint<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, istransitionpoint: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStackFrame_Impl::IsTransitionPoint(this) {
                    Ok(ok__) => {
                        istransitionpoint.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTransition<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, transitionscript: *mut *mut core::ffi::c_void, istransitioncontiguous: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugStackFrame_Impl::GetTransition(this, core::mem::transmute_copy(&transitionscript), core::mem::transmute_copy(&istransitioncontiguous)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszexpression: windows_core::PCWSTR, ppresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStackFrame_Impl::Evaluate(this, core::mem::transmute(&pwszexpression)) {
                    Ok(ok__) => {
                        ppresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateLocals<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, variablesenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStackFrame_Impl::EnumerateLocals(this) {
                    Ok(ok__) => {
                        variablesenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateArguments<Identity: IDataModelScriptDebugStackFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, variablesenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptDebugStackFrame_Impl::EnumerateArguments(this) {
                    Ok(ok__) => {
                        variablesenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetPosition: GetPosition::<Identity, OFFSET>,
            IsTransitionPoint: IsTransitionPoint::<Identity, OFFSET>,
            GetTransition: GetTransition::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            EnumerateLocals: EnumerateLocals::<Identity, OFFSET>,
            EnumerateArguments: EnumerateArguments::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugStackFrame as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugStackFrame {}
windows_core::imp::define_interface!(IDataModelScriptDebugVariableSetEnumerator, IDataModelScriptDebugVariableSetEnumerator_Vtbl, 0x0f9feed7_d045_4ac3_98a8_a98942cf6a35);
windows_core::imp::interface_hierarchy!(IDataModelScriptDebugVariableSetEnumerator, windows_core::IUnknown);
impl IDataModelScriptDebugVariableSetEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self, variablename: *mut windows_core::BSTR, variablevalue: Option<*mut Option<IModelObject>>, variablemetadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), core::mem::transmute(variablename), variablevalue.unwrap_or(core::mem::zeroed()) as _, variablemetadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptDebugVariableSetEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptDebugVariableSetEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self, variablename: *mut windows_core::BSTR, variablevalue: windows_core::OutRef<'_, IModelObject>, variablemetadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IDataModelScriptDebugVariableSetEnumerator_Vtbl {
    pub const fn new<Identity: IDataModelScriptDebugVariableSetEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IDataModelScriptDebugVariableSetEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugVariableSetEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDataModelScriptDebugVariableSetEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, variablename: *mut *mut core::ffi::c_void, variablevalue: *mut *mut core::ffi::c_void, variablemetadata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptDebugVariableSetEnumerator_Impl::GetNext(this, core::mem::transmute_copy(&variablename), core::mem::transmute_copy(&variablevalue), core::mem::transmute_copy(&variablemetadata)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptDebugVariableSetEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptDebugVariableSetEnumerator {}
windows_core::imp::define_interface!(IDataModelScriptHostContext, IDataModelScriptHostContext_Vtbl, 0x014d366a_1f23_4981_9219_b2db8b402054);
windows_core::imp::interface_hierarchy!(IDataModelScriptHostContext, windows_core::IUnknown);
impl IDataModelScriptHostContext {
    pub unsafe fn NotifyScriptChange<P0>(&self, script: P0, changekind: ScriptChangeKind) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScript>,
    {
        unsafe { (windows_core::Interface::vtable(self).NotifyScriptChange)(windows_core::Interface::as_raw(self), script.param().abi(), changekind).ok() }
    }
    pub unsafe fn GetNamespaceObject(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNamespaceObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptHostContext_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub NotifyScriptChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, ScriptChangeKind) -> windows_core::HRESULT,
    pub GetNamespaceObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptHostContext_Impl: windows_core::IUnknownImpl {
    fn NotifyScriptChange(&self, script: windows_core::Ref<'_, IDataModelScript>, changekind: ScriptChangeKind) -> windows_core::Result<()>;
    fn GetNamespaceObject(&self) -> windows_core::Result<IModelObject>;
}
impl IDataModelScriptHostContext_Vtbl {
    pub const fn new<Identity: IDataModelScriptHostContext_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn NotifyScriptChange<Identity: IDataModelScriptHostContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, script: *mut core::ffi::c_void, changekind: ScriptChangeKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptHostContext_Impl::NotifyScriptChange(this, core::mem::transmute_copy(&script), core::mem::transmute_copy(&changekind)).into()
            }
        }
        unsafe extern "system" fn GetNamespaceObject<Identity: IDataModelScriptHostContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, namespaceobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptHostContext_Impl::GetNamespaceObject(this) {
                    Ok(ok__) => {
                        namespaceobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            NotifyScriptChange: NotifyScriptChange::<Identity, OFFSET>,
            GetNamespaceObject: GetNamespaceObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptHostContext as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptHostContext {}
windows_core::imp::define_interface!(IDataModelScriptManager, IDataModelScriptManager_Vtbl, 0x6fd11e33_e5ad_410b_8011_68c6bc4bf80d);
windows_core::imp::interface_hierarchy!(IDataModelScriptManager, windows_core::IUnknown);
impl IDataModelScriptManager {
    pub unsafe fn GetDefaultNameBinder(&self) -> windows_core::Result<IDataModelNameBinder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultNameBinder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RegisterScriptProvider<P0>(&self, provider: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScriptProvider>,
    {
        unsafe { (windows_core::Interface::vtable(self).RegisterScriptProvider)(windows_core::Interface::as_raw(self), provider.param().abi()).ok() }
    }
    pub unsafe fn UnregisterScriptProvider<P0>(&self, provider: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDataModelScriptProvider>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnregisterScriptProvider)(windows_core::Interface::as_raw(self), provider.param().abi()).ok() }
    }
    pub unsafe fn FindProviderForScriptType<P0>(&self, scripttype: P0) -> windows_core::Result<IDataModelScriptProvider>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindProviderForScriptType)(windows_core::Interface::as_raw(self), scripttype.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindProviderForScriptExtension<P0>(&self, scriptextension: P0) -> windows_core::Result<IDataModelScriptProvider>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindProviderForScriptExtension)(windows_core::Interface::as_raw(self), scriptextension.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateScriptProviders(&self) -> windows_core::Result<IDataModelScriptProviderEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateScriptProviders)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDefaultNameBinder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterScriptProvider: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnregisterScriptProvider: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindProviderForScriptType: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindProviderForScriptExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateScriptProviders: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptManager_Impl: windows_core::IUnknownImpl {
    fn GetDefaultNameBinder(&self) -> windows_core::Result<IDataModelNameBinder>;
    fn RegisterScriptProvider(&self, provider: windows_core::Ref<'_, IDataModelScriptProvider>) -> windows_core::Result<()>;
    fn UnregisterScriptProvider(&self, provider: windows_core::Ref<'_, IDataModelScriptProvider>) -> windows_core::Result<()>;
    fn FindProviderForScriptType(&self, scripttype: &windows_core::PCWSTR) -> windows_core::Result<IDataModelScriptProvider>;
    fn FindProviderForScriptExtension(&self, scriptextension: &windows_core::PCWSTR) -> windows_core::Result<IDataModelScriptProvider>;
    fn EnumerateScriptProviders(&self) -> windows_core::Result<IDataModelScriptProviderEnumerator>;
}
impl IDataModelScriptManager_Vtbl {
    pub const fn new<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDefaultNameBinder<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppnamebinder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptManager_Impl::GetDefaultNameBinder(this) {
                    Ok(ok__) => {
                        ppnamebinder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterScriptProvider<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provider: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptManager_Impl::RegisterScriptProvider(this, core::mem::transmute_copy(&provider)).into()
            }
        }
        unsafe extern "system" fn UnregisterScriptProvider<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provider: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptManager_Impl::UnregisterScriptProvider(this, core::mem::transmute_copy(&provider)).into()
            }
        }
        unsafe extern "system" fn FindProviderForScriptType<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, scripttype: windows_core::PCWSTR, provider: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptManager_Impl::FindProviderForScriptType(this, core::mem::transmute(&scripttype)) {
                    Ok(ok__) => {
                        provider.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindProviderForScriptExtension<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, scriptextension: windows_core::PCWSTR, provider: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptManager_Impl::FindProviderForScriptExtension(this, core::mem::transmute(&scriptextension)) {
                    Ok(ok__) => {
                        provider.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateScriptProviders<Identity: IDataModelScriptManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptManager_Impl::EnumerateScriptProviders(this) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDefaultNameBinder: GetDefaultNameBinder::<Identity, OFFSET>,
            RegisterScriptProvider: RegisterScriptProvider::<Identity, OFFSET>,
            UnregisterScriptProvider: UnregisterScriptProvider::<Identity, OFFSET>,
            FindProviderForScriptType: FindProviderForScriptType::<Identity, OFFSET>,
            FindProviderForScriptExtension: FindProviderForScriptExtension::<Identity, OFFSET>,
            EnumerateScriptProviders: EnumerateScriptProviders::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptManager {}
windows_core::imp::define_interface!(IDataModelScriptProvider, IDataModelScriptProvider_Vtbl, 0x513461e0_4fca_48ce_8658_32f3e2056f3b);
windows_core::imp::interface_hierarchy!(IDataModelScriptProvider, windows_core::IUnknown);
impl IDataModelScriptProvider {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetExtension(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtension)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn CreateScript(&self) -> windows_core::Result<IDataModelScript> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateScript)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDefaultTemplateContent(&self) -> windows_core::Result<IDataModelScriptTemplate> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultTemplateContent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateTemplates(&self) -> windows_core::Result<IDataModelScriptTemplateEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateTemplates)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetExtension: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateScript: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDefaultTemplateContent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateTemplates: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptProvider_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetExtension(&self) -> windows_core::Result<windows_core::BSTR>;
    fn CreateScript(&self) -> windows_core::Result<IDataModelScript>;
    fn GetDefaultTemplateContent(&self) -> windows_core::Result<IDataModelScriptTemplate>;
    fn EnumerateTemplates(&self) -> windows_core::Result<IDataModelScriptTemplateEnumerator>;
}
impl IDataModelScriptProvider_Vtbl {
    pub const fn new<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProvider_Impl::GetName(this) {
                    Ok(ok__) => {
                        name.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExtension<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, extension: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProvider_Impl::GetExtension(this) {
                    Ok(ok__) => {
                        extension.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateScript<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, script: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProvider_Impl::CreateScript(this) {
                    Ok(ok__) => {
                        script.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDefaultTemplateContent<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, templatecontent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProvider_Impl::GetDefaultTemplateContent(this) {
                    Ok(ok__) => {
                        templatecontent.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateTemplates<Identity: IDataModelScriptProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProvider_Impl::EnumerateTemplates(this) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetExtension: GetExtension::<Identity, OFFSET>,
            CreateScript: CreateScript::<Identity, OFFSET>,
            GetDefaultTemplateContent: GetDefaultTemplateContent::<Identity, OFFSET>,
            EnumerateTemplates: EnumerateTemplates::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptProvider as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptProvider {}
windows_core::imp::define_interface!(IDataModelScriptProviderEnumerator, IDataModelScriptProviderEnumerator_Vtbl, 0x95ba00e2_704a_4fe2_a8f1_a7e7d8fb0941);
windows_core::imp::interface_hierarchy!(IDataModelScriptProviderEnumerator, windows_core::IUnknown);
impl IDataModelScriptProviderEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self) -> windows_core::Result<IDataModelScriptProvider> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptProviderEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptProviderEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self) -> windows_core::Result<IDataModelScriptProvider>;
}
impl IDataModelScriptProviderEnumerator_Vtbl {
    pub const fn new<Identity: IDataModelScriptProviderEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IDataModelScriptProviderEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptProviderEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDataModelScriptProviderEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provider: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptProviderEnumerator_Impl::GetNext(this) {
                    Ok(ok__) => {
                        provider.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptProviderEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptProviderEnumerator {}
windows_core::imp::define_interface!(IDataModelScriptTemplate, IDataModelScriptTemplate_Vtbl, 0x1303dec4_fa3b_4f1b_9224_b953d16babb5);
windows_core::imp::interface_hierarchy!(IDataModelScriptTemplate, windows_core::IUnknown);
impl IDataModelScriptTemplate {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetDescription(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDescription)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetContent(&self) -> windows_core::Result<super::super::super::Com::IStream> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptTemplate_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetContent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetContent: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataModelScriptTemplate_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetDescription(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetContent(&self) -> windows_core::Result<super::super::super::Com::IStream>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDataModelScriptTemplate_Vtbl {
    pub const fn new<Identity: IDataModelScriptTemplate_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: IDataModelScriptTemplate_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, templatename: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptTemplate_Impl::GetName(this) {
                    Ok(ok__) => {
                        templatename.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDescription<Identity: IDataModelScriptTemplate_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, templatedescription: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptTemplate_Impl::GetDescription(this) {
                    Ok(ok__) => {
                        templatedescription.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetContent<Identity: IDataModelScriptTemplate_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contentstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptTemplate_Impl::GetContent(this) {
                    Ok(ok__) => {
                        contentstream.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetContent: GetContent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptTemplate as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataModelScriptTemplate {}
windows_core::imp::define_interface!(IDataModelScriptTemplateEnumerator, IDataModelScriptTemplateEnumerator_Vtbl, 0x69ce6ae2_2268_4e6f_b062_20ce62bfe677);
windows_core::imp::interface_hierarchy!(IDataModelScriptTemplateEnumerator, windows_core::IUnknown);
impl IDataModelScriptTemplateEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self) -> windows_core::Result<IDataModelScriptTemplate> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataModelScriptTemplateEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDataModelScriptTemplateEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self) -> windows_core::Result<IDataModelScriptTemplate>;
}
impl IDataModelScriptTemplateEnumerator_Vtbl {
    pub const fn new<Identity: IDataModelScriptTemplateEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IDataModelScriptTemplateEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataModelScriptTemplateEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDataModelScriptTemplateEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, templatecontent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataModelScriptTemplateEnumerator_Impl::GetNext(this) {
                    Ok(ok__) => {
                        templatecontent.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataModelScriptTemplateEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataModelScriptTemplateEnumerator {}
windows_core::imp::define_interface!(IDebugAdvanced, IDebugAdvanced_Vtbl, 0xf2df5f53_071f_47bd_9de6_5734c3fed689);
windows_core::imp::interface_hierarchy!(IDebugAdvanced, windows_core::IUnknown);
impl IDebugAdvanced {
    pub unsafe fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadContext)(windows_core::Interface::as_raw(self), context as _, contextsize).ok() }
    }
    pub unsafe fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetThreadContext)(windows_core::Interface::as_raw(self), context, contextsize).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IDebugAdvanced_Impl: windows_core::IUnknownImpl {
    fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
}
impl IDebugAdvanced_Vtbl {
    pub const fn new<Identity: IDebugAdvanced_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThreadContext<Identity: IDebugAdvanced_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced_Impl::GetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SetThreadContext<Identity: IDebugAdvanced_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced_Impl::SetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThreadContext: GetThreadContext::<Identity, OFFSET>,
            SetThreadContext: SetThreadContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugAdvanced as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugAdvanced {}
windows_core::imp::define_interface!(IDebugAdvanced2, IDebugAdvanced2_Vtbl, 0x716d14c9_119b_4ba5_af1f_0890e672416a);
windows_core::imp::interface_hierarchy!(IDebugAdvanced2, windows_core::IUnknown);
impl IDebugAdvanced2 {
    pub unsafe fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadContext)(windows_core::Interface::as_raw(self), context as _, contextsize).ok() }
    }
    pub unsafe fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetThreadContext)(windows_core::Interface::as_raw(self), context, contextsize).ok() }
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: Option<*const core::ffi::c_void>, inbuffersize: u32, outbuffer: Option<*mut core::ffi::c_void>, outbuffersize: u32, outsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Request)(windows_core::Interface::as_raw(self), request, inbuffer.unwrap_or(core::mem::zeroed()) as _, inbuffersize, outbuffer.unwrap_or(core::mem::zeroed()) as _, outbuffersize, outsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileInformation<P1>(&self, which: u32, sourcefile: P1, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileInformation)(windows_core::Interface::as_raw(self), which, sourcefile.param().abi(), arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindSourceFileAndToken<P2>(&self, startelement: u32, modaddr: u64, file: P2, flags: u32, filetoken: Option<*const core::ffi::c_void>, filetokensize: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileAndToken)(windows_core::Interface::as_raw(self), startelement, modaddr, file.param().abi(), flags, filetoken.unwrap_or(core::mem::zeroed()) as _, filetokensize, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemObjectInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Request: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, u32, *const core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugAdvanced2_Impl: windows_core::IUnknownImpl {
    fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn Request(&self, request: u32, inbuffer: *const core::ffi::c_void, inbuffersize: u32, outbuffer: *mut core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileInformation(&self, which: u32, sourcefile: &windows_core::PCSTR, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn FindSourceFileAndToken(&self, 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::Result<()>;
    fn GetSymbolInformation(&self, 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::Result<()>;
    fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
}
impl IDebugAdvanced2_Vtbl {
    pub const fn new<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThreadContext<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::GetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SetThreadContext<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::SetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn Request<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::Request(this, core::mem::transmute_copy(&request), core::mem::transmute_copy(&inbuffer), core::mem::transmute_copy(&inbuffersize), core::mem::transmute_copy(&outbuffer), core::mem::transmute_copy(&outbuffersize), core::mem::transmute_copy(&outsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileInformation<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::GetSourceFileInformation(this, core::mem::transmute_copy(&which), core::mem::transmute(&sourcefile), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileAndToken<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::FindSourceFileAndToken(this, core::mem::transmute_copy(&startelement), core::mem::transmute_copy(&modaddr), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&filetoken), core::mem::transmute_copy(&filetokensize), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformation<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::GetSymbolInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemObjectInformation<Identity: IDebugAdvanced2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced2_Impl::GetSystemObjectInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThreadContext: GetThreadContext::<Identity, OFFSET>,
            SetThreadContext: SetThreadContext::<Identity, OFFSET>,
            Request: Request::<Identity, OFFSET>,
            GetSourceFileInformation: GetSourceFileInformation::<Identity, OFFSET>,
            FindSourceFileAndToken: FindSourceFileAndToken::<Identity, OFFSET>,
            GetSymbolInformation: GetSymbolInformation::<Identity, OFFSET>,
            GetSystemObjectInformation: GetSystemObjectInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugAdvanced2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugAdvanced2 {}
windows_core::imp::define_interface!(IDebugAdvanced3, IDebugAdvanced3_Vtbl, 0xcba4abb4_84c4_444d_87ca_a04e13286739);
windows_core::imp::interface_hierarchy!(IDebugAdvanced3, windows_core::IUnknown);
impl IDebugAdvanced3 {
    pub unsafe fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadContext)(windows_core::Interface::as_raw(self), context as _, contextsize).ok() }
    }
    pub unsafe fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetThreadContext)(windows_core::Interface::as_raw(self), context, contextsize).ok() }
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: Option<*const core::ffi::c_void>, inbuffersize: u32, outbuffer: Option<*mut core::ffi::c_void>, outbuffersize: u32, outsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Request)(windows_core::Interface::as_raw(self), request, inbuffer.unwrap_or(core::mem::zeroed()) as _, inbuffersize, outbuffer.unwrap_or(core::mem::zeroed()) as _, outbuffersize, outsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileInformation<P1>(&self, which: u32, sourcefile: P1, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileInformation)(windows_core::Interface::as_raw(self), which, sourcefile.param().abi(), arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindSourceFileAndToken<P2>(&self, startelement: u32, modaddr: u64, file: P2, flags: u32, filetoken: Option<*const core::ffi::c_void>, filetokensize: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileAndToken)(windows_core::Interface::as_raw(self), startelement, modaddr, file.param().abi(), flags, filetoken.unwrap_or(core::mem::zeroed()) as _, filetokensize, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemObjectInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileInformationWide<P1>(&self, which: u32, sourcefile: P1, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileInformationWide)(windows_core::Interface::as_raw(self), which, sourcefile.param().abi(), arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindSourceFileAndTokenWide<P2>(&self, startelement: u32, modaddr: u64, file: P2, flags: u32, filetoken: Option<*const core::ffi::c_void>, filetokensize: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u16]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileAndTokenWide)(windows_core::Interface::as_raw(self), startelement, modaddr, file.param().abi(), flags, filetoken.unwrap_or(core::mem::zeroed()) as _, filetokensize, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformationWide(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformationWide)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Request: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, u32, *const core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FindSourceFileAndTokenWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCWSTR, u32, *const core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugAdvanced3_Impl: windows_core::IUnknownImpl {
    fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn Request(&self, request: u32, inbuffer: *const core::ffi::c_void, inbuffersize: u32, outbuffer: *mut core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileInformation(&self, which: u32, sourcefile: &windows_core::PCSTR, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn FindSourceFileAndToken(&self, 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::Result<()>;
    fn GetSymbolInformation(&self, 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::Result<()>;
    fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileInformationWide(&self, which: u32, sourcefile: &windows_core::PCWSTR, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn FindSourceFileAndTokenWide(&self, 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::Result<()>;
    fn GetSymbolInformationWide(&self, 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::Result<()>;
}
impl IDebugAdvanced3_Vtbl {
    pub const fn new<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThreadContext<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SetThreadContext<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::SetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn Request<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::Request(this, core::mem::transmute_copy(&request), core::mem::transmute_copy(&inbuffer), core::mem::transmute_copy(&inbuffersize), core::mem::transmute_copy(&outbuffer), core::mem::transmute_copy(&outbuffersize), core::mem::transmute_copy(&outsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileInformation<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetSourceFileInformation(this, core::mem::transmute_copy(&which), core::mem::transmute(&sourcefile), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileAndToken<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::FindSourceFileAndToken(this, core::mem::transmute_copy(&startelement), core::mem::transmute_copy(&modaddr), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&filetoken), core::mem::transmute_copy(&filetokensize), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformation<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetSymbolInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemObjectInformation<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetSystemObjectInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileInformationWide<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetSourceFileInformationWide(this, core::mem::transmute_copy(&which), core::mem::transmute(&sourcefile), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileAndTokenWide<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::FindSourceFileAndTokenWide(this, core::mem::transmute_copy(&startelement), core::mem::transmute_copy(&modaddr), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&filetoken), core::mem::transmute_copy(&filetokensize), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformationWide<Identity: IDebugAdvanced3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced3_Impl::GetSymbolInformationWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThreadContext: GetThreadContext::<Identity, OFFSET>,
            SetThreadContext: SetThreadContext::<Identity, OFFSET>,
            Request: Request::<Identity, OFFSET>,
            GetSourceFileInformation: GetSourceFileInformation::<Identity, OFFSET>,
            FindSourceFileAndToken: FindSourceFileAndToken::<Identity, OFFSET>,
            GetSymbolInformation: GetSymbolInformation::<Identity, OFFSET>,
            GetSystemObjectInformation: GetSystemObjectInformation::<Identity, OFFSET>,
            GetSourceFileInformationWide: GetSourceFileInformationWide::<Identity, OFFSET>,
            FindSourceFileAndTokenWide: FindSourceFileAndTokenWide::<Identity, OFFSET>,
            GetSymbolInformationWide: GetSymbolInformationWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugAdvanced3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugAdvanced3 {}
windows_core::imp::define_interface!(IDebugAdvanced4, IDebugAdvanced4_Vtbl, 0xd1069067_2a65_4bf0_ae97_76184b67856b);
windows_core::imp::interface_hierarchy!(IDebugAdvanced4, windows_core::IUnknown);
impl IDebugAdvanced4 {
    pub unsafe fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadContext)(windows_core::Interface::as_raw(self), context as _, contextsize).ok() }
    }
    pub unsafe fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetThreadContext)(windows_core::Interface::as_raw(self), context, contextsize).ok() }
    }
    pub unsafe fn Request(&self, request: u32, inbuffer: Option<*const core::ffi::c_void>, inbuffersize: u32, outbuffer: Option<*mut core::ffi::c_void>, outbuffersize: u32, outsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Request)(windows_core::Interface::as_raw(self), request, inbuffer.unwrap_or(core::mem::zeroed()) as _, inbuffersize, outbuffer.unwrap_or(core::mem::zeroed()) as _, outbuffersize, outsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileInformation<P1>(&self, which: u32, sourcefile: P1, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileInformation)(windows_core::Interface::as_raw(self), which, sourcefile.param().abi(), arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindSourceFileAndToken<P2>(&self, startelement: u32, modaddr: u64, file: P2, flags: u32, filetoken: Option<*const core::ffi::c_void>, filetokensize: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileAndToken)(windows_core::Interface::as_raw(self), startelement, modaddr, file.param().abi(), flags, filetoken.unwrap_or(core::mem::zeroed()) as _, filetokensize, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemObjectInformation)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileInformationWide<P1>(&self, which: u32, sourcefile: P1, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileInformationWide)(windows_core::Interface::as_raw(self), which, sourcefile.param().abi(), arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindSourceFileAndTokenWide<P2>(&self, startelement: u32, modaddr: u64, file: P2, flags: u32, filetoken: Option<*const core::ffi::c_void>, filetokensize: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u16]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileAndTokenWide)(windows_core::Interface::as_raw(self), startelement, modaddr, file.param().abi(), flags, filetoken.unwrap_or(core::mem::zeroed()) as _, filetokensize, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformationWide(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformationWide)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolInformationWideEx(&self, which: u32, arg64: u64, arg32: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>, stringbuffer: Option<&mut [u16]>, stringsize: Option<*mut u32>, pinfoex: Option<*mut SYMBOL_INFO_EX>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolInformationWideEx)(windows_core::Interface::as_raw(self), which, arg64, arg32, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(stringbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), stringbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _, pinfoex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugAdvanced4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetThreadContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Request: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FindSourceFileAndToken: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, u32, *const core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemObjectInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FindSourceFileAndTokenWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCWSTR, u32, *const core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolInformationWideEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut SYMBOL_INFO_EX) -> windows_core::HRESULT,
}
pub trait IDebugAdvanced4_Impl: windows_core::IUnknownImpl {
    fn GetThreadContext(&self, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SetThreadContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn Request(&self, request: u32, inbuffer: *const core::ffi::c_void, inbuffersize: u32, outbuffer: *mut core::ffi::c_void, outbuffersize: u32, outsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileInformation(&self, which: u32, sourcefile: &windows_core::PCSTR, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn FindSourceFileAndToken(&self, 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::Result<()>;
    fn GetSymbolInformation(&self, 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::Result<()>;
    fn GetSystemObjectInformation(&self, which: u32, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileInformationWide(&self, which: u32, sourcefile: &windows_core::PCWSTR, arg64: u64, arg32: u32, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn FindSourceFileAndTokenWide(&self, 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::Result<()>;
    fn GetSymbolInformationWide(&self, 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::Result<()>;
    fn GetSymbolInformationWideEx(&self, 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::Result<()>;
}
impl IDebugAdvanced4_Vtbl {
    pub const fn new<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThreadContext<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SetThreadContext<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::SetThreadContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn Request<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::Request(this, core::mem::transmute_copy(&request), core::mem::transmute_copy(&inbuffer), core::mem::transmute_copy(&inbuffersize), core::mem::transmute_copy(&outbuffer), core::mem::transmute_copy(&outbuffersize), core::mem::transmute_copy(&outsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileInformation<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSourceFileInformation(this, core::mem::transmute_copy(&which), core::mem::transmute(&sourcefile), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileAndToken<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::FindSourceFileAndToken(this, core::mem::transmute_copy(&startelement), core::mem::transmute_copy(&modaddr), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&filetoken), core::mem::transmute_copy(&filetokensize), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformation<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSymbolInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemObjectInformation<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSystemObjectInformation(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileInformationWide<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSourceFileInformationWide(this, core::mem::transmute_copy(&which), core::mem::transmute(&sourcefile), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileAndTokenWide<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::FindSourceFileAndTokenWide(this, core::mem::transmute_copy(&startelement), core::mem::transmute_copy(&modaddr), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&filetoken), core::mem::transmute_copy(&filetokensize), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformationWide<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSymbolInformationWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolInformationWideEx<Identity: IDebugAdvanced4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugAdvanced4_Impl::GetSymbolInformationWideEx(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&arg64), core::mem::transmute_copy(&arg32), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize), core::mem::transmute_copy(&stringbuffer), core::mem::transmute_copy(&stringbuffersize), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&pinfoex)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThreadContext: GetThreadContext::<Identity, OFFSET>,
            SetThreadContext: SetThreadContext::<Identity, OFFSET>,
            Request: Request::<Identity, OFFSET>,
            GetSourceFileInformation: GetSourceFileInformation::<Identity, OFFSET>,
            FindSourceFileAndToken: FindSourceFileAndToken::<Identity, OFFSET>,
            GetSymbolInformation: GetSymbolInformation::<Identity, OFFSET>,
            GetSystemObjectInformation: GetSystemObjectInformation::<Identity, OFFSET>,
            GetSourceFileInformationWide: GetSourceFileInformationWide::<Identity, OFFSET>,
            FindSourceFileAndTokenWide: FindSourceFileAndTokenWide::<Identity, OFFSET>,
            GetSymbolInformationWide: GetSymbolInformationWide::<Identity, OFFSET>,
            GetSymbolInformationWideEx: GetSymbolInformationWideEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugAdvanced4 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugAdvanced4 {}
windows_core::imp::define_interface!(IDebugBreakpoint, IDebugBreakpoint_Vtbl, 0x5bd9d474_5975_423a_b88b_65a8e7110e65);
windows_core::imp::interface_hierarchy!(IDebugBreakpoint, windows_core::IUnknown);
impl IDebugBreakpoint {
    pub unsafe fn GetId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetType)(windows_core::Interface::as_raw(self), breaktype as _, proctype as _).ok() }
    }
    pub unsafe fn GetAdder(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAdder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDataParameters)(windows_core::Interface::as_raw(self), size as _, accesstype as _).ok() }
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDataParameters)(windows_core::Interface::as_raw(self), size, accesstype).ok() }
    }
    pub unsafe fn GetPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPassCount)(windows_core::Interface::as_raw(self), count).ok() }
    }
    pub unsafe fn GetCurrentPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMatchThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMatchThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMatchThreadId)(windows_core::Interface::as_raw(self), thread).ok() }
    }
    pub unsafe fn GetCommand(&self, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCommand)(windows_core::Interface::as_raw(self), command.param().abi()).ok() }
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: Option<&mut [u8]>, expressionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), expressionsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOffsetExpression)(windows_core::Interface::as_raw(self), expression.param().abi()).ok() }
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetParameters)(windows_core::Interface::as_raw(self), params as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
}
pub trait IDebugBreakpoint_Impl: windows_core::IUnknownImpl {
    fn GetId(&self) -> windows_core::Result<u32>;
    fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()>;
    fn GetAdder(&self) -> windows_core::Result<IDebugClient>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn AddFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn SetFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn GetOffset(&self) -> windows_core::Result<u64>;
    fn SetOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> windows_core::Result<()>;
    fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()>;
    fn GetPassCount(&self) -> windows_core::Result<u32>;
    fn SetPassCount(&self, count: u32) -> windows_core::Result<()>;
    fn GetCurrentPassCount(&self) -> windows_core::Result<u32>;
    fn GetMatchThreadId(&self) -> windows_core::Result<u32>;
    fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()>;
    fn GetCommand(&self, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetCommand(&self, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetOffsetExpression(&self, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::Result<()>;
    fn SetOffsetExpression(&self, expression: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
}
impl IDebugBreakpoint_Vtbl {
    pub const fn new<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetId<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetType<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::GetType(this, core::mem::transmute_copy(&breaktype), core::mem::transmute_copy(&proctype)).into()
            }
        }
        unsafe extern "system" fn GetAdder<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, adder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetAdder(this) {
                    Ok(ok__) => {
                        adder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddFlags<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::AddFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveFlags<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::RemoveFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOffset<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOffset<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetDataParameters<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::GetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn SetDataParameters<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: u32, accesstype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn GetPassCount<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPassCount<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetPassCount(this, core::mem::transmute_copy(&count)).into()
            }
        }
        unsafe extern "system" fn GetCurrentPassCount<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetCurrentPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMatchThreadId<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint_Impl::GetMatchThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetMatchThreadId<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, thread: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetMatchThreadId(this, core::mem::transmute_copy(&thread)).into()
            }
        }
        unsafe extern "system" fn GetCommand<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::GetCommand(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetCommand<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetCommand(this, core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetOffsetExpression<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::GetOffsetExpression(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&expressionsize)).into()
            }
        }
        unsafe extern "system" fn SetOffsetExpression<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::SetOffsetExpression(this, core::mem::transmute(&expression)).into()
            }
        }
        unsafe extern "system" fn GetParameters<Identity: IDebugBreakpoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint_Impl::GetParameters(this, core::mem::transmute_copy(&params)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            GetType: GetType::<Identity, OFFSET>,
            GetAdder: GetAdder::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            AddFlags: AddFlags::<Identity, OFFSET>,
            RemoveFlags: RemoveFlags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            GetOffset: GetOffset::<Identity, OFFSET>,
            SetOffset: SetOffset::<Identity, OFFSET>,
            GetDataParameters: GetDataParameters::<Identity, OFFSET>,
            SetDataParameters: SetDataParameters::<Identity, OFFSET>,
            GetPassCount: GetPassCount::<Identity, OFFSET>,
            SetPassCount: SetPassCount::<Identity, OFFSET>,
            GetCurrentPassCount: GetCurrentPassCount::<Identity, OFFSET>,
            GetMatchThreadId: GetMatchThreadId::<Identity, OFFSET>,
            SetMatchThreadId: SetMatchThreadId::<Identity, OFFSET>,
            GetCommand: GetCommand::<Identity, OFFSET>,
            SetCommand: SetCommand::<Identity, OFFSET>,
            GetOffsetExpression: GetOffsetExpression::<Identity, OFFSET>,
            SetOffsetExpression: SetOffsetExpression::<Identity, OFFSET>,
            GetParameters: GetParameters::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugBreakpoint as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugBreakpoint {}
windows_core::imp::define_interface!(IDebugBreakpoint2, IDebugBreakpoint2_Vtbl, 0x1b278d20_79f2_426e_a3f9_c1ddf375d48e);
windows_core::imp::interface_hierarchy!(IDebugBreakpoint2, windows_core::IUnknown);
impl IDebugBreakpoint2 {
    pub unsafe fn GetId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetType)(windows_core::Interface::as_raw(self), breaktype as _, proctype as _).ok() }
    }
    pub unsafe fn GetAdder(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAdder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDataParameters)(windows_core::Interface::as_raw(self), size as _, accesstype as _).ok() }
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDataParameters)(windows_core::Interface::as_raw(self), size, accesstype).ok() }
    }
    pub unsafe fn GetPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPassCount)(windows_core::Interface::as_raw(self), count).ok() }
    }
    pub unsafe fn GetCurrentPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMatchThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMatchThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMatchThreadId)(windows_core::Interface::as_raw(self), thread).ok() }
    }
    pub unsafe fn GetCommand(&self, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCommand)(windows_core::Interface::as_raw(self), command.param().abi()).ok() }
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: Option<&mut [u8]>, expressionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), expressionsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOffsetExpression)(windows_core::Interface::as_raw(self), expression.param().abi()).ok() }
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetParameters)(windows_core::Interface::as_raw(self), params as _).ok() }
    }
    pub unsafe fn GetCommandWide(&self, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCommandWide<P0>(&self, command: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCommandWide)(windows_core::Interface::as_raw(self), command.param().abi()).ok() }
    }
    pub unsafe fn GetOffsetExpressionWide(&self, buffer: Option<&mut [u16]>, expressionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), expressionsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOffsetExpressionWide<P0>(&self, expression: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOffsetExpressionWide)(windows_core::Interface::as_raw(self), expression.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub GetCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetOffsetExpressionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOffsetExpressionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugBreakpoint2_Impl: windows_core::IUnknownImpl {
    fn GetId(&self) -> windows_core::Result<u32>;
    fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()>;
    fn GetAdder(&self) -> windows_core::Result<IDebugClient>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn AddFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn SetFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn GetOffset(&self) -> windows_core::Result<u64>;
    fn SetOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> windows_core::Result<()>;
    fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()>;
    fn GetPassCount(&self) -> windows_core::Result<u32>;
    fn SetPassCount(&self, count: u32) -> windows_core::Result<()>;
    fn GetCurrentPassCount(&self) -> windows_core::Result<u32>;
    fn GetMatchThreadId(&self) -> windows_core::Result<u32>;
    fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()>;
    fn GetCommand(&self, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetCommand(&self, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetOffsetExpression(&self, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::Result<()>;
    fn SetOffsetExpression(&self, expression: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn GetCommandWide(&self, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetCommandWide(&self, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetOffsetExpressionWide(&self, buffer: windows_core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::Result<()>;
    fn SetOffsetExpressionWide(&self, expression: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugBreakpoint2_Vtbl {
    pub const fn new<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetId<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetType<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetType(this, core::mem::transmute_copy(&breaktype), core::mem::transmute_copy(&proctype)).into()
            }
        }
        unsafe extern "system" fn GetAdder<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, adder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetAdder(this) {
                    Ok(ok__) => {
                        adder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddFlags<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::AddFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveFlags<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::RemoveFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOffset<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOffset<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetDataParameters<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn SetDataParameters<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: u32, accesstype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn GetPassCount<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPassCount<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetPassCount(this, core::mem::transmute_copy(&count)).into()
            }
        }
        unsafe extern "system" fn GetCurrentPassCount<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetCurrentPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMatchThreadId<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint2_Impl::GetMatchThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetMatchThreadId<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, thread: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetMatchThreadId(this, core::mem::transmute_copy(&thread)).into()
            }
        }
        unsafe extern "system" fn GetCommand<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetCommand(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetCommand<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetCommand(this, core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetOffsetExpression<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetOffsetExpression(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&expressionsize)).into()
            }
        }
        unsafe extern "system" fn SetOffsetExpression<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetOffsetExpression(this, core::mem::transmute(&expression)).into()
            }
        }
        unsafe extern "system" fn GetParameters<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetParameters(this, core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetCommandWide<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetCommandWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetCommandWide<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetCommandWide(this, core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetOffsetExpressionWide<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::GetOffsetExpressionWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&expressionsize)).into()
            }
        }
        unsafe extern "system" fn SetOffsetExpressionWide<Identity: IDebugBreakpoint2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint2_Impl::SetOffsetExpressionWide(this, core::mem::transmute(&expression)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            GetType: GetType::<Identity, OFFSET>,
            GetAdder: GetAdder::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            AddFlags: AddFlags::<Identity, OFFSET>,
            RemoveFlags: RemoveFlags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            GetOffset: GetOffset::<Identity, OFFSET>,
            SetOffset: SetOffset::<Identity, OFFSET>,
            GetDataParameters: GetDataParameters::<Identity, OFFSET>,
            SetDataParameters: SetDataParameters::<Identity, OFFSET>,
            GetPassCount: GetPassCount::<Identity, OFFSET>,
            SetPassCount: SetPassCount::<Identity, OFFSET>,
            GetCurrentPassCount: GetCurrentPassCount::<Identity, OFFSET>,
            GetMatchThreadId: GetMatchThreadId::<Identity, OFFSET>,
            SetMatchThreadId: SetMatchThreadId::<Identity, OFFSET>,
            GetCommand: GetCommand::<Identity, OFFSET>,
            SetCommand: SetCommand::<Identity, OFFSET>,
            GetOffsetExpression: GetOffsetExpression::<Identity, OFFSET>,
            SetOffsetExpression: SetOffsetExpression::<Identity, OFFSET>,
            GetParameters: GetParameters::<Identity, OFFSET>,
            GetCommandWide: GetCommandWide::<Identity, OFFSET>,
            SetCommandWide: SetCommandWide::<Identity, OFFSET>,
            GetOffsetExpressionWide: GetOffsetExpressionWide::<Identity, OFFSET>,
            SetOffsetExpressionWide: SetOffsetExpressionWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugBreakpoint2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugBreakpoint2 {}
windows_core::imp::define_interface!(IDebugBreakpoint3, IDebugBreakpoint3_Vtbl, 0x38f5c249_b448_43bb_9835_579d4ec02249);
windows_core::imp::interface_hierarchy!(IDebugBreakpoint3, windows_core::IUnknown);
impl IDebugBreakpoint3 {
    pub unsafe fn GetId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetType)(windows_core::Interface::as_raw(self), breaktype as _, proctype as _).ok() }
    }
    pub unsafe fn GetAdder(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAdder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn SetFlags(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDataParameters)(windows_core::Interface::as_raw(self), size as _, accesstype as _).ok() }
    }
    pub unsafe fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDataParameters)(windows_core::Interface::as_raw(self), size, accesstype).ok() }
    }
    pub unsafe fn GetPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPassCount(&self, count: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPassCount)(windows_core::Interface::as_raw(self), count).ok() }
    }
    pub unsafe fn GetCurrentPassCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentPassCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMatchThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMatchThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMatchThreadId)(windows_core::Interface::as_raw(self), thread).ok() }
    }
    pub unsafe fn GetCommand(&self, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCommand<P0>(&self, command: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCommand)(windows_core::Interface::as_raw(self), command.param().abi()).ok() }
    }
    pub unsafe fn GetOffsetExpression(&self, buffer: Option<&mut [u8]>, expressionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), expressionsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOffsetExpression<P0>(&self, expression: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOffsetExpression)(windows_core::Interface::as_raw(self), expression.param().abi()).ok() }
    }
    pub unsafe fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetParameters)(windows_core::Interface::as_raw(self), params as _).ok() }
    }
    pub unsafe fn GetCommandWide(&self, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCommandWide<P0>(&self, command: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCommandWide)(windows_core::Interface::as_raw(self), command.param().abi()).ok() }
    }
    pub unsafe fn GetOffsetExpressionWide(&self, buffer: Option<&mut [u16]>, expressionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), expressionsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOffsetExpressionWide<P0>(&self, expression: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOffsetExpressionWide)(windows_core::Interface::as_raw(self), expression.param().abi()).ok() }
    }
    pub unsafe fn GetGuid(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetGuid)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugBreakpoint3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetAdder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetDataParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentPassCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetMatchThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOffsetExpression: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub GetCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetOffsetExpressionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOffsetExpressionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
}
pub trait IDebugBreakpoint3_Impl: windows_core::IUnknownImpl {
    fn GetId(&self) -> windows_core::Result<u32>;
    fn GetType(&self, breaktype: *mut u32, proctype: *mut u32) -> windows_core::Result<()>;
    fn GetAdder(&self) -> windows_core::Result<IDebugClient>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn AddFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn RemoveFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn SetFlags(&self, flags: u32) -> windows_core::Result<()>;
    fn GetOffset(&self) -> windows_core::Result<u64>;
    fn SetOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetDataParameters(&self, size: *mut u32, accesstype: *mut u32) -> windows_core::Result<()>;
    fn SetDataParameters(&self, size: u32, accesstype: u32) -> windows_core::Result<()>;
    fn GetPassCount(&self) -> windows_core::Result<u32>;
    fn SetPassCount(&self, count: u32) -> windows_core::Result<()>;
    fn GetCurrentPassCount(&self) -> windows_core::Result<u32>;
    fn GetMatchThreadId(&self) -> windows_core::Result<u32>;
    fn SetMatchThreadId(&self, thread: u32) -> windows_core::Result<()>;
    fn GetCommand(&self, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetCommand(&self, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetOffsetExpression(&self, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::Result<()>;
    fn SetOffsetExpression(&self, expression: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetParameters(&self, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn GetCommandWide(&self, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetCommandWide(&self, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetOffsetExpressionWide(&self, buffer: windows_core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::Result<()>;
    fn SetOffsetExpressionWide(&self, expression: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetGuid(&self) -> windows_core::Result<windows_core::GUID>;
}
impl IDebugBreakpoint3_Vtbl {
    pub const fn new<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetId<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetType<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, breaktype: *mut u32, proctype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetType(this, core::mem::transmute_copy(&breaktype), core::mem::transmute_copy(&proctype)).into()
            }
        }
        unsafe extern "system" fn GetAdder<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, adder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetAdder(this) {
                    Ok(ok__) => {
                        adder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddFlags<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::AddFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveFlags<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::RemoveFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetFlags(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOffset<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOffset<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetDataParameters<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32, accesstype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn SetDataParameters<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: u32, accesstype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetDataParameters(this, core::mem::transmute_copy(&size), core::mem::transmute_copy(&accesstype)).into()
            }
        }
        unsafe extern "system" fn GetPassCount<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPassCount<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetPassCount(this, core::mem::transmute_copy(&count)).into()
            }
        }
        unsafe extern "system" fn GetCurrentPassCount<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetCurrentPassCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMatchThreadId<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetMatchThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetMatchThreadId<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, thread: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetMatchThreadId(this, core::mem::transmute_copy(&thread)).into()
            }
        }
        unsafe extern "system" fn GetCommand<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetCommand(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetCommand<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetCommand(this, core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetOffsetExpression<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetOffsetExpression(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&expressionsize)).into()
            }
        }
        unsafe extern "system" fn SetOffsetExpression<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetOffsetExpression(this, core::mem::transmute(&expression)).into()
            }
        }
        unsafe extern "system" fn GetParameters<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetParameters(this, core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetCommandWide<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetCommandWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetCommandWide<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetCommandWide(this, core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetOffsetExpressionWide<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, expressionsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::GetOffsetExpressionWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&expressionsize)).into()
            }
        }
        unsafe extern "system" fn SetOffsetExpressionWide<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugBreakpoint3_Impl::SetOffsetExpressionWide(this, core::mem::transmute(&expression)).into()
            }
        }
        unsafe extern "system" fn GetGuid<Identity: IDebugBreakpoint3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugBreakpoint3_Impl::GetGuid(this) {
                    Ok(ok__) => {
                        guid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            GetType: GetType::<Identity, OFFSET>,
            GetAdder: GetAdder::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            AddFlags: AddFlags::<Identity, OFFSET>,
            RemoveFlags: RemoveFlags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            GetOffset: GetOffset::<Identity, OFFSET>,
            SetOffset: SetOffset::<Identity, OFFSET>,
            GetDataParameters: GetDataParameters::<Identity, OFFSET>,
            SetDataParameters: SetDataParameters::<Identity, OFFSET>,
            GetPassCount: GetPassCount::<Identity, OFFSET>,
            SetPassCount: SetPassCount::<Identity, OFFSET>,
            GetCurrentPassCount: GetCurrentPassCount::<Identity, OFFSET>,
            GetMatchThreadId: GetMatchThreadId::<Identity, OFFSET>,
            SetMatchThreadId: SetMatchThreadId::<Identity, OFFSET>,
            GetCommand: GetCommand::<Identity, OFFSET>,
            SetCommand: SetCommand::<Identity, OFFSET>,
            GetOffsetExpression: GetOffsetExpression::<Identity, OFFSET>,
            SetOffsetExpression: SetOffsetExpression::<Identity, OFFSET>,
            GetParameters: GetParameters::<Identity, OFFSET>,
            GetCommandWide: GetCommandWide::<Identity, OFFSET>,
            SetCommandWide: SetCommandWide::<Identity, OFFSET>,
            GetOffsetExpressionWide: GetOffsetExpressionWide::<Identity, OFFSET>,
            SetOffsetExpressionWide: SetOffsetExpressionWide::<Identity, OFFSET>,
            GetGuid: GetGuid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugBreakpoint3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugBreakpoint3 {}
windows_core::imp::define_interface!(IDebugClient, IDebugClient_Vtbl, 0x27fe5639_8407_4f47_8364_ee118fb08ac8);
windows_core::imp::interface_hierarchy!(IDebugClient, windows_core::IUnknown);
impl IDebugClient {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugClient_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
}
impl IDebugClient_Vtbl {
    pub const fn new<Identity: IDebugClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient_Impl::FlushCallbacks(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient {}
windows_core::imp::define_interface!(IDebugClient2, IDebugClient2_Vtbl, 0xedbed635_372e_4dab_bbfe_ed0d2f63be81);
windows_core::imp::interface_hierarchy!(IDebugClient2, windows_core::IUnknown);
impl IDebugClient2 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugClient2_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
}
impl IDebugClient2_Vtbl {
    pub const fn new<Identity: IDebugClient2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient2_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient2_Impl::AbandonCurrentProcess(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient2 {}
windows_core::imp::define_interface!(IDebugClient3, IDebugClient3_Vtbl, 0xdd492d7f_71b8_4ad6_a8dc_1c887479ff91);
windows_core::imp::interface_hierarchy!(IDebugClient3, windows_core::IUnknown);
impl IDebugClient3 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
}
pub trait IDebugClient3_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
}
impl IDebugClient3_Vtbl {
    pub const fn new<Identity: IDebugClient3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient3_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient3_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient3 {}
windows_core::imp::define_interface!(IDebugClient4, IDebugClient4_Vtbl, 0xca83c3de_5089_4cf8_93c8_d892387f2a5e);
windows_core::imp::interface_hierarchy!(IDebugClient4, windows_core::IUnknown);
impl IDebugClient4 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle).ok() }
    }
    pub unsafe fn WriteDumpFileWide<P0, P4>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, r#type).ok() }
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberDumpFiles)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugClient4_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64) -> windows_core::Result<()>;
    fn WriteDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::Result<()>;
    fn GetNumberDumpFiles(&self) -> windows_core::Result<u32>;
    fn GetDumpFile(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn GetDumpFileWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
}
impl IDebugClient4_Vtbl {
    pub const fn new<Identity: IDebugClient4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::OpenDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFileWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::WriteDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFileWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::AddDumpInformationFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberDumpFiles<Identity: IDebugClient4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient4_Impl::GetNumberDumpFiles(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFile<Identity: IDebugClient4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetDumpFile(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetDumpFileWide<Identity: IDebugClient4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient4_Impl::GetDumpFileWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
            OpenDumpFileWide: OpenDumpFileWide::<Identity, OFFSET>,
            WriteDumpFileWide: WriteDumpFileWide::<Identity, OFFSET>,
            AddDumpInformationFileWide: AddDumpInformationFileWide::<Identity, OFFSET>,
            GetNumberDumpFiles: GetNumberDumpFiles::<Identity, OFFSET>,
            GetDumpFile: GetDumpFile::<Identity, OFFSET>,
            GetDumpFileWide: GetDumpFileWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient4 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient4 {}
windows_core::imp::define_interface!(IDebugClient5, IDebugClient5_Vtbl, 0xe3acb9d7_7ec2_4f0c_a0da_e81e0cbbe628);
windows_core::imp::interface_hierarchy!(IDebugClient5, windows_core::IUnknown);
impl IDebugClient5 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle).ok() }
    }
    pub unsafe fn WriteDumpFileWide<P0, P4>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, r#type).ok() }
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberDumpFiles)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn AttachKernelWide<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernelWide)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: Option<&mut [u16]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptionsWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServerWide<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServerWide)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServerWide)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServerWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServersWide<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServersWide)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: Option<&mut [u16]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefixWide)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentityWide(&self, buffer: Option<&mut [u16]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentityWide<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentityWide)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefix)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefixWide)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PopOutputLinePrefix)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEventCallbacks)(windows_core::Interface::as_raw(self), eventflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetQuitLockString(&self, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockString)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockStringWide)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient5_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugClient5_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64) -> windows_core::Result<()>;
    fn WriteDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::Result<()>;
    fn GetNumberDumpFiles(&self) -> windows_core::Result<u32>;
    fn GetDumpFile(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn GetDumpFileWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn AttachKernelWide(&self, flags: u32, connectoptions: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptionsWide(&self, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptionsWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartProcessServerWide(&self, flags: u32, options: &windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServerWide(&self, remoteoptions: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn StartServerWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputServersWide(&self, outputcontrol: u32, machine: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide>;
    fn SetOutputCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacksWide>) -> windows_core::Result<()>;
    fn GetOutputLinePrefixWide(&self, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefixWide(&self, prefix: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIdentityWide(&self, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentityWide(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide>;
    fn SetEventCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacksWide>) -> windows_core::Result<()>;
    fn CreateProcess2(&self, server: u64, commandline: &windows_core::PCSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCSTR, environment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn CreateProcess2Wide(&self, server: u64, commandline: &windows_core::PCWSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CreateProcessAndAttach2(&self, 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::Result<()>;
    fn CreateProcessAndAttach2Wide(&self, 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::Result<()>;
    fn PushOutputLinePrefix(&self, newprefix: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn PushOutputLinePrefixWide(&self, newprefix: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()>;
    fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32>;
    fn GetQuitLockString(&self, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockString(&self, string: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetQuitLockStringWide(&self, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockStringWide(&self, string: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugClient5_Vtbl {
    pub const fn new<Identity: IDebugClient5_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OpenDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFileWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::WriteDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFileWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AddDumpInformationFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberDumpFiles<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetNumberDumpFiles(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFile<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetDumpFile(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetDumpFileWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetDumpFileWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn AttachKernelWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::AttachKernelWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptionsWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetKernelConnectionOptionsWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptionsWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetKernelConnectionOptionsWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServerWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::StartProcessServerWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServerWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCWSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::ConnectProcessServerWide(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartServerWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::StartServerWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServersWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OutputServersWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacksWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetOutputCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacksWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefixWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetOutputLinePrefixWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefixWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetOutputLinePrefixWide(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentityWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetIdentityWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentityWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::OutputIdentityWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacksWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetEventCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacksWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetEventCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcess2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2Wide<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcess2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessAndAttach2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2Wide<Identity: IDebugClient5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::CreateProcessAndAttach2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn PushOutputLinePrefix<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::PushOutputLinePrefix(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PushOutputLinePrefixWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::PushOutputLinePrefixWide(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PopOutputLinePrefix<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::PopOutputLinePrefix(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetNumberInputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetNumberInputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberOutputCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetNumberOutputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberEventCallbacks<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventflags: u32, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient5_Impl::GetNumberEventCallbacks(this, core::mem::transmute_copy(&eventflags)) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetQuitLockString<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetQuitLockString(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockString<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetQuitLockString(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn GetQuitLockStringWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::GetQuitLockStringWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockStringWide<Identity: IDebugClient5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient5_Impl::SetQuitLockStringWide(this, core::mem::transmute(&string)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
            OpenDumpFileWide: OpenDumpFileWide::<Identity, OFFSET>,
            WriteDumpFileWide: WriteDumpFileWide::<Identity, OFFSET>,
            AddDumpInformationFileWide: AddDumpInformationFileWide::<Identity, OFFSET>,
            GetNumberDumpFiles: GetNumberDumpFiles::<Identity, OFFSET>,
            GetDumpFile: GetDumpFile::<Identity, OFFSET>,
            GetDumpFileWide: GetDumpFileWide::<Identity, OFFSET>,
            AttachKernelWide: AttachKernelWide::<Identity, OFFSET>,
            GetKernelConnectionOptionsWide: GetKernelConnectionOptionsWide::<Identity, OFFSET>,
            SetKernelConnectionOptionsWide: SetKernelConnectionOptionsWide::<Identity, OFFSET>,
            StartProcessServerWide: StartProcessServerWide::<Identity, OFFSET>,
            ConnectProcessServerWide: ConnectProcessServerWide::<Identity, OFFSET>,
            StartServerWide: StartServerWide::<Identity, OFFSET>,
            OutputServersWide: OutputServersWide::<Identity, OFFSET>,
            GetOutputCallbacksWide: GetOutputCallbacksWide::<Identity, OFFSET>,
            SetOutputCallbacksWide: SetOutputCallbacksWide::<Identity, OFFSET>,
            GetOutputLinePrefixWide: GetOutputLinePrefixWide::<Identity, OFFSET>,
            SetOutputLinePrefixWide: SetOutputLinePrefixWide::<Identity, OFFSET>,
            GetIdentityWide: GetIdentityWide::<Identity, OFFSET>,
            OutputIdentityWide: OutputIdentityWide::<Identity, OFFSET>,
            GetEventCallbacksWide: GetEventCallbacksWide::<Identity, OFFSET>,
            SetEventCallbacksWide: SetEventCallbacksWide::<Identity, OFFSET>,
            CreateProcess2: CreateProcess2::<Identity, OFFSET>,
            CreateProcess2Wide: CreateProcess2Wide::<Identity, OFFSET>,
            CreateProcessAndAttach2: CreateProcessAndAttach2::<Identity, OFFSET>,
            CreateProcessAndAttach2Wide: CreateProcessAndAttach2Wide::<Identity, OFFSET>,
            PushOutputLinePrefix: PushOutputLinePrefix::<Identity, OFFSET>,
            PushOutputLinePrefixWide: PushOutputLinePrefixWide::<Identity, OFFSET>,
            PopOutputLinePrefix: PopOutputLinePrefix::<Identity, OFFSET>,
            GetNumberInputCallbacks: GetNumberInputCallbacks::<Identity, OFFSET>,
            GetNumberOutputCallbacks: GetNumberOutputCallbacks::<Identity, OFFSET>,
            GetNumberEventCallbacks: GetNumberEventCallbacks::<Identity, OFFSET>,
            GetQuitLockString: GetQuitLockString::<Identity, OFFSET>,
            SetQuitLockString: SetQuitLockString::<Identity, OFFSET>,
            GetQuitLockStringWide: GetQuitLockStringWide::<Identity, OFFSET>,
            SetQuitLockStringWide: SetQuitLockStringWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient5 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient5 {}
windows_core::imp::define_interface!(IDebugClient6, IDebugClient6_Vtbl, 0xfd28b4c5_c498_4686_a28e_62cad2154eb3);
windows_core::imp::interface_hierarchy!(IDebugClient6, windows_core::IUnknown);
impl IDebugClient6 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle).ok() }
    }
    pub unsafe fn WriteDumpFileWide<P0, P4>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, r#type).ok() }
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberDumpFiles)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn AttachKernelWide<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernelWide)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: Option<&mut [u16]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptionsWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServerWide<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServerWide)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServerWide)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServerWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServersWide<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServersWide)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: Option<&mut [u16]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefixWide)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentityWide(&self, buffer: Option<&mut [u16]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentityWide<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentityWide)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefix)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefixWide)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PopOutputLinePrefix)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEventCallbacks)(windows_core::Interface::as_raw(self), eventflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetQuitLockString(&self, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockString)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockStringWide)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventContextCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventContextCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient6_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugClient6_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64) -> windows_core::Result<()>;
    fn WriteDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::Result<()>;
    fn GetNumberDumpFiles(&self) -> windows_core::Result<u32>;
    fn GetDumpFile(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn GetDumpFileWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn AttachKernelWide(&self, flags: u32, connectoptions: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptionsWide(&self, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptionsWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartProcessServerWide(&self, flags: u32, options: &windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServerWide(&self, remoteoptions: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn StartServerWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputServersWide(&self, outputcontrol: u32, machine: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide>;
    fn SetOutputCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacksWide>) -> windows_core::Result<()>;
    fn GetOutputLinePrefixWide(&self, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefixWide(&self, prefix: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIdentityWide(&self, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentityWide(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide>;
    fn SetEventCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacksWide>) -> windows_core::Result<()>;
    fn CreateProcess2(&self, server: u64, commandline: &windows_core::PCSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCSTR, environment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn CreateProcess2Wide(&self, server: u64, commandline: &windows_core::PCWSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CreateProcessAndAttach2(&self, 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::Result<()>;
    fn CreateProcessAndAttach2Wide(&self, 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::Result<()>;
    fn PushOutputLinePrefix(&self, newprefix: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn PushOutputLinePrefixWide(&self, newprefix: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()>;
    fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32>;
    fn GetQuitLockString(&self, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockString(&self, string: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetQuitLockStringWide(&self, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockStringWide(&self, string: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEventContextCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventContextCallbacks>) -> windows_core::Result<()>;
}
impl IDebugClient6_Vtbl {
    pub const fn new<Identity: IDebugClient6_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OpenDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFileWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::WriteDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFileWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AddDumpInformationFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberDumpFiles<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetNumberDumpFiles(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFile<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetDumpFile(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetDumpFileWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetDumpFileWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn AttachKernelWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::AttachKernelWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptionsWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetKernelConnectionOptionsWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptionsWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetKernelConnectionOptionsWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServerWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::StartProcessServerWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServerWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCWSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::ConnectProcessServerWide(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartServerWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::StartServerWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServersWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OutputServersWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacksWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetOutputCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacksWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefixWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetOutputLinePrefixWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefixWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetOutputLinePrefixWide(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentityWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetIdentityWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentityWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::OutputIdentityWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacksWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetEventCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacksWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetEventCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcess2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2Wide<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcess2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessAndAttach2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2Wide<Identity: IDebugClient6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::CreateProcessAndAttach2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn PushOutputLinePrefix<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::PushOutputLinePrefix(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PushOutputLinePrefixWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::PushOutputLinePrefixWide(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PopOutputLinePrefix<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::PopOutputLinePrefix(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetNumberInputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetNumberInputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberOutputCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetNumberOutputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberEventCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventflags: u32, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient6_Impl::GetNumberEventCallbacks(this, core::mem::transmute_copy(&eventflags)) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetQuitLockString<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetQuitLockString(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockString<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetQuitLockString(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn GetQuitLockStringWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::GetQuitLockStringWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockStringWide<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetQuitLockStringWide(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn SetEventContextCallbacks<Identity: IDebugClient6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient6_Impl::SetEventContextCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
            OpenDumpFileWide: OpenDumpFileWide::<Identity, OFFSET>,
            WriteDumpFileWide: WriteDumpFileWide::<Identity, OFFSET>,
            AddDumpInformationFileWide: AddDumpInformationFileWide::<Identity, OFFSET>,
            GetNumberDumpFiles: GetNumberDumpFiles::<Identity, OFFSET>,
            GetDumpFile: GetDumpFile::<Identity, OFFSET>,
            GetDumpFileWide: GetDumpFileWide::<Identity, OFFSET>,
            AttachKernelWide: AttachKernelWide::<Identity, OFFSET>,
            GetKernelConnectionOptionsWide: GetKernelConnectionOptionsWide::<Identity, OFFSET>,
            SetKernelConnectionOptionsWide: SetKernelConnectionOptionsWide::<Identity, OFFSET>,
            StartProcessServerWide: StartProcessServerWide::<Identity, OFFSET>,
            ConnectProcessServerWide: ConnectProcessServerWide::<Identity, OFFSET>,
            StartServerWide: StartServerWide::<Identity, OFFSET>,
            OutputServersWide: OutputServersWide::<Identity, OFFSET>,
            GetOutputCallbacksWide: GetOutputCallbacksWide::<Identity, OFFSET>,
            SetOutputCallbacksWide: SetOutputCallbacksWide::<Identity, OFFSET>,
            GetOutputLinePrefixWide: GetOutputLinePrefixWide::<Identity, OFFSET>,
            SetOutputLinePrefixWide: SetOutputLinePrefixWide::<Identity, OFFSET>,
            GetIdentityWide: GetIdentityWide::<Identity, OFFSET>,
            OutputIdentityWide: OutputIdentityWide::<Identity, OFFSET>,
            GetEventCallbacksWide: GetEventCallbacksWide::<Identity, OFFSET>,
            SetEventCallbacksWide: SetEventCallbacksWide::<Identity, OFFSET>,
            CreateProcess2: CreateProcess2::<Identity, OFFSET>,
            CreateProcess2Wide: CreateProcess2Wide::<Identity, OFFSET>,
            CreateProcessAndAttach2: CreateProcessAndAttach2::<Identity, OFFSET>,
            CreateProcessAndAttach2Wide: CreateProcessAndAttach2Wide::<Identity, OFFSET>,
            PushOutputLinePrefix: PushOutputLinePrefix::<Identity, OFFSET>,
            PushOutputLinePrefixWide: PushOutputLinePrefixWide::<Identity, OFFSET>,
            PopOutputLinePrefix: PopOutputLinePrefix::<Identity, OFFSET>,
            GetNumberInputCallbacks: GetNumberInputCallbacks::<Identity, OFFSET>,
            GetNumberOutputCallbacks: GetNumberOutputCallbacks::<Identity, OFFSET>,
            GetNumberEventCallbacks: GetNumberEventCallbacks::<Identity, OFFSET>,
            GetQuitLockString: GetQuitLockString::<Identity, OFFSET>,
            SetQuitLockString: SetQuitLockString::<Identity, OFFSET>,
            GetQuitLockStringWide: GetQuitLockStringWide::<Identity, OFFSET>,
            SetQuitLockStringWide: SetQuitLockStringWide::<Identity, OFFSET>,
            SetEventContextCallbacks: SetEventContextCallbacks::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient6 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient6 {}
windows_core::imp::define_interface!(IDebugClient7, IDebugClient7_Vtbl, 0x13586be3_542e_481e_b1f2_8497ba74f9a9);
windows_core::imp::interface_hierarchy!(IDebugClient7, windows_core::IUnknown);
impl IDebugClient7 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle).ok() }
    }
    pub unsafe fn WriteDumpFileWide<P0, P4>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, r#type).ok() }
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberDumpFiles)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn AttachKernelWide<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernelWide)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: Option<&mut [u16]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptionsWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServerWide<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServerWide)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServerWide)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServerWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServersWide<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServersWide)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: Option<&mut [u16]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefixWide)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentityWide(&self, buffer: Option<&mut [u16]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentityWide<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentityWide)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefix)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefixWide)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PopOutputLinePrefix)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEventCallbacks)(windows_core::Interface::as_raw(self), eventflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetQuitLockString(&self, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockString)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockStringWide)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventContextCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventContextCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn SetClientContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetClientContext)(windows_core::Interface::as_raw(self), context, contextsize).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient7_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetClientContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IDebugClient7_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64) -> windows_core::Result<()>;
    fn WriteDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::Result<()>;
    fn GetNumberDumpFiles(&self) -> windows_core::Result<u32>;
    fn GetDumpFile(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn GetDumpFileWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn AttachKernelWide(&self, flags: u32, connectoptions: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptionsWide(&self, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptionsWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartProcessServerWide(&self, flags: u32, options: &windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServerWide(&self, remoteoptions: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn StartServerWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputServersWide(&self, outputcontrol: u32, machine: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide>;
    fn SetOutputCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacksWide>) -> windows_core::Result<()>;
    fn GetOutputLinePrefixWide(&self, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefixWide(&self, prefix: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIdentityWide(&self, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentityWide(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide>;
    fn SetEventCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacksWide>) -> windows_core::Result<()>;
    fn CreateProcess2(&self, server: u64, commandline: &windows_core::PCSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCSTR, environment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn CreateProcess2Wide(&self, server: u64, commandline: &windows_core::PCWSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CreateProcessAndAttach2(&self, 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::Result<()>;
    fn CreateProcessAndAttach2Wide(&self, 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::Result<()>;
    fn PushOutputLinePrefix(&self, newprefix: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn PushOutputLinePrefixWide(&self, newprefix: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()>;
    fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32>;
    fn GetQuitLockString(&self, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockString(&self, string: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetQuitLockStringWide(&self, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockStringWide(&self, string: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEventContextCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventContextCallbacks>) -> windows_core::Result<()>;
    fn SetClientContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
}
impl IDebugClient7_Vtbl {
    pub const fn new<Identity: IDebugClient7_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OpenDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFileWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::WriteDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFileWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AddDumpInformationFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberDumpFiles<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetNumberDumpFiles(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFile<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetDumpFile(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetDumpFileWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetDumpFileWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn AttachKernelWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::AttachKernelWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptionsWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetKernelConnectionOptionsWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptionsWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetKernelConnectionOptionsWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServerWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::StartProcessServerWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServerWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCWSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::ConnectProcessServerWide(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartServerWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::StartServerWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServersWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OutputServersWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacksWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetOutputCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacksWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefixWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetOutputLinePrefixWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefixWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetOutputLinePrefixWide(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentityWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetIdentityWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentityWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::OutputIdentityWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacksWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetEventCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacksWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetEventCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcess2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2Wide<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcess2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessAndAttach2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2Wide<Identity: IDebugClient7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::CreateProcessAndAttach2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn PushOutputLinePrefix<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::PushOutputLinePrefix(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PushOutputLinePrefixWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::PushOutputLinePrefixWide(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PopOutputLinePrefix<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::PopOutputLinePrefix(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetNumberInputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetNumberInputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberOutputCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetNumberOutputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberEventCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventflags: u32, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient7_Impl::GetNumberEventCallbacks(this, core::mem::transmute_copy(&eventflags)) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetQuitLockString<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetQuitLockString(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockString<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetQuitLockString(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn GetQuitLockStringWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::GetQuitLockStringWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockStringWide<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetQuitLockStringWide(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn SetEventContextCallbacks<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetEventContextCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn SetClientContext<Identity: IDebugClient7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient7_Impl::SetClientContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
            OpenDumpFileWide: OpenDumpFileWide::<Identity, OFFSET>,
            WriteDumpFileWide: WriteDumpFileWide::<Identity, OFFSET>,
            AddDumpInformationFileWide: AddDumpInformationFileWide::<Identity, OFFSET>,
            GetNumberDumpFiles: GetNumberDumpFiles::<Identity, OFFSET>,
            GetDumpFile: GetDumpFile::<Identity, OFFSET>,
            GetDumpFileWide: GetDumpFileWide::<Identity, OFFSET>,
            AttachKernelWide: AttachKernelWide::<Identity, OFFSET>,
            GetKernelConnectionOptionsWide: GetKernelConnectionOptionsWide::<Identity, OFFSET>,
            SetKernelConnectionOptionsWide: SetKernelConnectionOptionsWide::<Identity, OFFSET>,
            StartProcessServerWide: StartProcessServerWide::<Identity, OFFSET>,
            ConnectProcessServerWide: ConnectProcessServerWide::<Identity, OFFSET>,
            StartServerWide: StartServerWide::<Identity, OFFSET>,
            OutputServersWide: OutputServersWide::<Identity, OFFSET>,
            GetOutputCallbacksWide: GetOutputCallbacksWide::<Identity, OFFSET>,
            SetOutputCallbacksWide: SetOutputCallbacksWide::<Identity, OFFSET>,
            GetOutputLinePrefixWide: GetOutputLinePrefixWide::<Identity, OFFSET>,
            SetOutputLinePrefixWide: SetOutputLinePrefixWide::<Identity, OFFSET>,
            GetIdentityWide: GetIdentityWide::<Identity, OFFSET>,
            OutputIdentityWide: OutputIdentityWide::<Identity, OFFSET>,
            GetEventCallbacksWide: GetEventCallbacksWide::<Identity, OFFSET>,
            SetEventCallbacksWide: SetEventCallbacksWide::<Identity, OFFSET>,
            CreateProcess2: CreateProcess2::<Identity, OFFSET>,
            CreateProcess2Wide: CreateProcess2Wide::<Identity, OFFSET>,
            CreateProcessAndAttach2: CreateProcessAndAttach2::<Identity, OFFSET>,
            CreateProcessAndAttach2Wide: CreateProcessAndAttach2Wide::<Identity, OFFSET>,
            PushOutputLinePrefix: PushOutputLinePrefix::<Identity, OFFSET>,
            PushOutputLinePrefixWide: PushOutputLinePrefixWide::<Identity, OFFSET>,
            PopOutputLinePrefix: PopOutputLinePrefix::<Identity, OFFSET>,
            GetNumberInputCallbacks: GetNumberInputCallbacks::<Identity, OFFSET>,
            GetNumberOutputCallbacks: GetNumberOutputCallbacks::<Identity, OFFSET>,
            GetNumberEventCallbacks: GetNumberEventCallbacks::<Identity, OFFSET>,
            GetQuitLockString: GetQuitLockString::<Identity, OFFSET>,
            SetQuitLockString: SetQuitLockString::<Identity, OFFSET>,
            GetQuitLockStringWide: GetQuitLockStringWide::<Identity, OFFSET>,
            SetQuitLockStringWide: SetQuitLockStringWide::<Identity, OFFSET>,
            SetEventContextCallbacks: SetEventContextCallbacks::<Identity, OFFSET>,
            SetClientContext: SetClientContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient7 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient7 {}
windows_core::imp::define_interface!(IDebugClient8, IDebugClient8_Vtbl, 0xcec43add_6375_469e_83d5_414e4033c19a);
windows_core::imp::interface_hierarchy!(IDebugClient8, windows_core::IUnknown);
impl IDebugClient8 {
    pub unsafe fn AttachKernel<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernel)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptions(&self, buffer: Option<&mut [u8]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptions<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptions)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServer<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServer)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServer<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServer)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DisconnectProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIds(&self, server: u64, ids: Option<&mut [u32]>, actualcount: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), actualcount.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableName<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableName)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescription(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u8]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u8]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttachProcess)(windows_core::Interface::as_raw(self), server, processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessA<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn GetProcessOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveProcessOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi()).ok() }
    }
    pub unsafe fn WriteDumpFile<P0>(&self, dumpfile: P0, qualifier: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier).ok() }
    }
    pub unsafe fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServer)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServers<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServers)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn TerminateProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachProcesses(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachProcesses)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndSession(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndSession)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetExitCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExitCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExitDispatch)(windows_core::Interface::as_raw(self), client.param().abi()).ok() }
    }
    pub unsafe fn CreateClient(&self) -> windows_core::Result<IDebugClient> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetInputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugInputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<IDebugClient>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOtherOutputMask<P0>(&self, client: P0, mask: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugClient>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOtherOutputMask)(windows_core::Interface::as_raw(self), client.param().abi(), mask).ok() }
    }
    pub unsafe fn GetOutputWidth(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputWidth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOutputWidth)(windows_core::Interface::as_raw(self), columns).ok() }
    }
    pub unsafe fn GetOutputLinePrefix(&self, buffer: Option<&mut [u8]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefix<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefix)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentity(&self, buffer: Option<&mut [u8]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentity<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentity)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacks)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn FlushCallbacks(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FlushCallbacks)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn WriteDumpFile2<P0, P3>(&self, dumpfile: P0, qualifier: u32, formatflags: u32, comment: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFile2)(windows_core::Interface::as_raw(self), dumpfile.param().abi(), qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFile<P0>(&self, infofile: P0, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFile)(windows_core::Interface::as_raw(self), infofile.param().abi(), r#type).ok() }
    }
    pub unsafe fn EndProcessServer(&self, server: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndProcessServer)(windows_core::Interface::as_raw(self), server).ok() }
    }
    pub unsafe fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WaitForProcessServerEnd)(windows_core::Interface::as_raw(self), timeout).ok() }
    }
    pub unsafe fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKernelDebuggerEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TerminateCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TerminateCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DetachCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DetachCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AbandonCurrentProcess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbandonCurrentProcess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRunningProcessSystemIdByExecutableNameWide<P1>(&self, server: u64, exename: P1, flags: u32) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRunningProcessSystemIdByExecutableNameWide)(windows_core::Interface::as_raw(self), server, exename.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRunningProcessDescriptionWide(&self, server: u64, systemid: u32, flags: u32, exename: Option<&mut [u16]>, actualexenamesize: Option<*mut u32>, description: Option<&mut [u16]>, actualdescriptionsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                actualexenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                actualdescriptionsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn CreateProcessWide<P1>(&self, server: u64, commandline: P1, createflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttachWide<P1>(&self, server: u64, commandline: P1, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttachWide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), createflags, processid, attachflags).ok() }
    }
    pub unsafe fn OpenDumpFileWide<P0>(&self, filename: P0, filehandle: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle).ok() }
    }
    pub unsafe fn WriteDumpFileWide<P0, P4>(&self, filename: P0, filehandle: u64, qualifier: u32, formatflags: u32, comment: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteDumpFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, qualifier, formatflags, comment.param().abi()).ok() }
    }
    pub unsafe fn AddDumpInformationFileWide<P0>(&self, filename: P0, filehandle: u64, r#type: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddDumpInformationFileWide)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, r#type).ok() }
    }
    pub unsafe fn GetNumberDumpFiles(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberDumpFiles)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFile(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn GetDumpFileWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>, handle: Option<*mut u64>, r#type: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, handle.unwrap_or(core::mem::zeroed()) as _, r#type as _).ok() }
    }
    pub unsafe fn AttachKernelWide<P1>(&self, flags: u32, connectoptions: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AttachKernelWide)(windows_core::Interface::as_raw(self), flags, connectoptions.param().abi()).ok() }
    }
    pub unsafe fn GetKernelConnectionOptionsWide(&self, buffer: Option<&mut [u16]>, optionssize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), optionssize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKernelConnectionOptionsWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKernelConnectionOptionsWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn StartProcessServerWide<P1>(&self, flags: u32, options: P1, reserved: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProcessServerWide)(windows_core::Interface::as_raw(self), flags, options.param().abi(), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ConnectProcessServerWide<P0>(&self, remoteoptions: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ConnectProcessServerWide)(windows_core::Interface::as_raw(self), remoteoptions.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn StartServerWide<P0>(&self, options: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServerWide)(windows_core::Interface::as_raw(self), options.param().abi()).ok() }
    }
    pub unsafe fn OutputServersWide<P1>(&self, outputcontrol: u32, machine: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputServersWide)(windows_core::Interface::as_raw(self), outputcontrol, machine.param().abi(), flags).ok() }
    }
    pub unsafe fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOutputCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetOutputCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugOutputCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn GetOutputLinePrefixWide(&self, buffer: Option<&mut [u16]>, prefixsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), prefixsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetOutputLinePrefixWide<P0>(&self, prefix: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOutputLinePrefixWide)(windows_core::Interface::as_raw(self), prefix.param().abi()).ok() }
    }
    pub unsafe fn GetIdentityWide(&self, buffer: Option<&mut [u16]>, identitysize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), identitysize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputIdentityWide<P2>(&self, outputcontrol: u32, flags: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputIdentityWide)(windows_core::Interface::as_raw(self), outputcontrol, flags, format.param().abi()).ok() }
    }
    pub unsafe fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCallbacksWide)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetEventCallbacksWide<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventCallbacksWide>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventCallbacksWide)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcess2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcess2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn CreateProcessAndAttach2Wide<P1, P4, P5>(&self, server: u64, commandline: P1, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: P4, environment: P5, processid: u32, attachflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessAndAttach2Wide)(windows_core::Interface::as_raw(self), server, commandline.param().abi(), optionsbuffer, optionsbuffersize, initialdirectory.param().abi(), environment.param().abi(), processid, attachflags).ok() }
    }
    pub unsafe fn PushOutputLinePrefix<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefix)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PushOutputLinePrefixWide<P0>(&self, newprefix: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PushOutputLinePrefixWide)(windows_core::Interface::as_raw(self), newprefix.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PopOutputLinePrefix)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberInputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOutputCallbacks)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEventCallbacks)(windows_core::Interface::as_raw(self), eventflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetQuitLockString(&self, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockString<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockString)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn GetQuitLockStringWide(&self, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetQuitLockStringWide<P0>(&self, string: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetQuitLockStringWide)(windows_core::Interface::as_raw(self), string.param().abi()).ok() }
    }
    pub unsafe fn SetEventContextCallbacks<P0>(&self, callbacks: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugEventContextCallbacks>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventContextCallbacks)(windows_core::Interface::as_raw(self), callbacks.param().abi()).ok() }
    }
    pub unsafe fn SetClientContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenDumpFileWide2)(windows_core::Interface::as_raw(self), filename.param().abi(), filehandle, alternatearch).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugClient8_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AttachKernel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptions: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub StartProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub DisconnectProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIds: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AttachProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub GetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetProcessOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WriteDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ConnectSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartServer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputServers: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub TerminateProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachProcesses: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndSession: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExitCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub DispatchCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitDispatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOtherOutputMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetOutputWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentity: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FlushCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WriteDumpFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub EndProcessServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub WaitForProcessServerEnd: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub IsKernelDebuggerEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TerminateCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DetachCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AbandonCurrentProcess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRunningProcessSystemIdByExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetRunningProcessDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub CreateProcessWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttachWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, u32, u32, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub WriteDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddDumpInformationFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
    pub GetNumberDumpFiles: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub AttachKernelWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetKernelConnectionOptionsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StartProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub ConnectProcessServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub StartServerWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputServersWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOutputCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputIdentityWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetEventCallbacksWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateProcess2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub CreateProcess2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *const core::ffi::c_void, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32) -> windows_core::HRESULT,
    pub CreateProcessAndAttach2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *const core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
    pub PushOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub PushOutputLinePrefixWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub PopOutputLinePrefix: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetNumberInputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberOutputCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEventCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockString: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetQuitLockStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetEventContextCallbacks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetClientContext: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OpenDumpFileWide2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, u32) -> windows_core::HRESULT,
}
pub trait IDebugClient8_Impl: windows_core::IUnknownImpl {
    fn AttachKernel(&self, flags: u32, connectoptions: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptions(&self, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptions(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn StartProcessServer(&self, flags: u32, options: &windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServer(&self, remoteoptions: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn DisconnectProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIds(&self, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableName(&self, server: u64, exename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescription(&self, 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::Result<()>;
    fn AttachProcess(&self, server: u64, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttach(&self, server: u64, commandline: &windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn GetProcessOptions(&self) -> windows_core::Result<u32>;
    fn AddProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetProcessOptions(&self, options: u32) -> windows_core::Result<()>;
    fn OpenDumpFile(&self, dumpfile: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WriteDumpFile(&self, dumpfile: &windows_core::PCSTR, qualifier: u32) -> windows_core::Result<()>;
    fn ConnectSession(&self, flags: u32, historylimit: u32) -> windows_core::Result<()>;
    fn StartServer(&self, options: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputServers(&self, outputcontrol: u32, machine: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn TerminateProcesses(&self) -> windows_core::Result<()>;
    fn DetachProcesses(&self) -> windows_core::Result<()>;
    fn EndSession(&self, flags: u32) -> windows_core::Result<()>;
    fn GetExitCode(&self) -> windows_core::Result<u32>;
    fn DispatchCallbacks(&self, timeout: u32) -> windows_core::Result<()>;
    fn ExitDispatch(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<()>;
    fn CreateClient(&self) -> windows_core::Result<IDebugClient>;
    fn GetInputCallbacks(&self) -> windows_core::Result<IDebugInputCallbacks>;
    fn SetInputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugInputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputCallbacks(&self) -> windows_core::Result<IDebugOutputCallbacks>;
    fn SetOutputCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacks>) -> windows_core::Result<()>;
    fn GetOutputMask(&self) -> windows_core::Result<u32>;
    fn SetOutputMask(&self, mask: u32) -> windows_core::Result<()>;
    fn GetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>) -> windows_core::Result<u32>;
    fn SetOtherOutputMask(&self, client: windows_core::Ref<'_, IDebugClient>, mask: u32) -> windows_core::Result<()>;
    fn GetOutputWidth(&self) -> windows_core::Result<u32>;
    fn SetOutputWidth(&self, columns: u32) -> windows_core::Result<()>;
    fn GetOutputLinePrefix(&self, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefix(&self, prefix: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetIdentity(&self, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentity(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetEventCallbacks(&self) -> windows_core::Result<IDebugEventCallbacks>;
    fn SetEventCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacks>) -> windows_core::Result<()>;
    fn FlushCallbacks(&self) -> windows_core::Result<()>;
    fn WriteDumpFile2(&self, dumpfile: &windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFile(&self, infofile: &windows_core::PCSTR, r#type: u32) -> windows_core::Result<()>;
    fn EndProcessServer(&self, server: u64) -> windows_core::Result<()>;
    fn WaitForProcessServerEnd(&self, timeout: u32) -> windows_core::Result<()>;
    fn IsKernelDebuggerEnabled(&self) -> windows_core::Result<()>;
    fn TerminateCurrentProcess(&self) -> windows_core::Result<()>;
    fn DetachCurrentProcess(&self) -> windows_core::Result<()>;
    fn AbandonCurrentProcess(&self) -> windows_core::Result<()>;
    fn GetRunningProcessSystemIdByExecutableNameWide(&self, server: u64, exename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u32>;
    fn GetRunningProcessDescriptionWide(&self, 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::Result<()>;
    fn CreateProcessWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32) -> windows_core::Result<()>;
    fn CreateProcessAndAttachWide(&self, server: u64, commandline: &windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64) -> windows_core::Result<()>;
    fn WriteDumpFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddDumpInformationFileWide(&self, filename: &windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::Result<()>;
    fn GetNumberDumpFiles(&self) -> windows_core::Result<u32>;
    fn GetDumpFile(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn GetDumpFileWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32, handle: *mut u64, r#type: *mut u32) -> windows_core::Result<()>;
    fn AttachKernelWide(&self, flags: u32, connectoptions: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetKernelConnectionOptionsWide(&self, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::Result<()>;
    fn SetKernelConnectionOptionsWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartProcessServerWide(&self, flags: u32, options: &windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn ConnectProcessServerWide(&self, remoteoptions: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn StartServerWide(&self, options: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputServersWide(&self, outputcontrol: u32, machine: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetOutputCallbacksWide(&self) -> windows_core::Result<IDebugOutputCallbacksWide>;
    fn SetOutputCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugOutputCallbacksWide>) -> windows_core::Result<()>;
    fn GetOutputLinePrefixWide(&self, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::Result<()>;
    fn SetOutputLinePrefixWide(&self, prefix: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIdentityWide(&self, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::Result<()>;
    fn OutputIdentityWide(&self, outputcontrol: u32, flags: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetEventCallbacksWide(&self) -> windows_core::Result<IDebugEventCallbacksWide>;
    fn SetEventCallbacksWide(&self, callbacks: windows_core::Ref<'_, IDebugEventCallbacksWide>) -> windows_core::Result<()>;
    fn CreateProcess2(&self, server: u64, commandline: &windows_core::PCSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCSTR, environment: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn CreateProcess2Wide(&self, server: u64, commandline: &windows_core::PCWSTR, optionsbuffer: *const core::ffi::c_void, optionsbuffersize: u32, initialdirectory: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CreateProcessAndAttach2(&self, 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::Result<()>;
    fn CreateProcessAndAttach2Wide(&self, 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::Result<()>;
    fn PushOutputLinePrefix(&self, newprefix: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn PushOutputLinePrefixWide(&self, newprefix: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn PopOutputLinePrefix(&self, handle: u64) -> windows_core::Result<()>;
    fn GetNumberInputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberOutputCallbacks(&self) -> windows_core::Result<u32>;
    fn GetNumberEventCallbacks(&self, eventflags: u32) -> windows_core::Result<u32>;
    fn GetQuitLockString(&self, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockString(&self, string: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetQuitLockStringWide(&self, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn SetQuitLockStringWide(&self, string: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEventContextCallbacks(&self, callbacks: windows_core::Ref<'_, IDebugEventContextCallbacks>) -> windows_core::Result<()>;
    fn SetClientContext(&self, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn OpenDumpFileWide2(&self, filename: &windows_core::PCWSTR, filehandle: u64, alternatearch: u32) -> windows_core::Result<()>;
}
impl IDebugClient8_Vtbl {
    pub const fn new<Identity: IDebugClient8_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AttachKernel<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AttachKernel(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetKernelConnectionOptions(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetKernelConnectionOptions(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServer<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::StartProcessServer(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServer<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::ConnectProcessServer(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisconnectProcessServer<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::DisconnectProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIds<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, ids: *mut u32, count: u32, actualcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetRunningProcessSystemIds(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&count), core::mem::transmute_copy(&actualcount)).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableName<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetRunningProcessSystemIdByExecutableName(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescription<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetRunningProcessDescription(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn AttachProcess<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AttachProcess(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessA(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessAndAttach(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn GetProcessOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetProcessOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddProcessOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AddProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveProcessOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::RemoveProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetProcessOptions<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetProcessOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFile<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OpenDumpFile(this, core::mem::transmute(&dumpfile)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::WriteDumpFile(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn ConnectSession<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, historylimit: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::ConnectSession(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&historylimit)).into()
            }
        }
        unsafe extern "system" fn StartServer<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::StartServer(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServers<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OutputServers(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn TerminateProcesses<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::TerminateProcesses(this).into()
            }
        }
        unsafe extern "system" fn DetachProcesses<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::DetachProcesses(this).into()
            }
        }
        unsafe extern "system" fn EndSession<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::EndSession(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetExitCode<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetExitCode(this) {
                    Ok(ok__) => {
                        code.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DispatchCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::DispatchCallbacks(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn ExitDispatch<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::ExitDispatch(this, core::mem::transmute_copy(&client)).into()
            }
        }
        unsafe extern "system" fn CreateClient<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::CreateClient(this) {
                    Ok(ok__) => {
                        client.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetInputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetInputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetOutputCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputMask<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetOutputMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputMask<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOtherOutputMask<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetOtherOutputMask(this, core::mem::transmute_copy(&client)) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOtherOutputMask<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, client: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOtherOutputMask(this, core::mem::transmute_copy(&client), core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn GetOutputWidth<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetOutputWidth(this) {
                    Ok(ok__) => {
                        columns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputWidth<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputWidth(this, core::mem::transmute_copy(&columns)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefix<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetOutputLinePrefix(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefix<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputLinePrefix(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentity<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetIdentity(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentity<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OutputIdentity(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetEventCallbacks(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetEventCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn FlushCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::FlushCallbacks(this).into()
            }
        }
        unsafe extern "system" fn WriteDumpFile2<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dumpfile: windows_core::PCSTR, qualifier: u32, formatflags: u32, comment: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::WriteDumpFile2(this, core::mem::transmute(&dumpfile), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFile<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, infofile: windows_core::PCSTR, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AddDumpInformationFile(this, core::mem::transmute(&infofile), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn EndProcessServer<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::EndProcessServer(this, core::mem::transmute_copy(&server)).into()
            }
        }
        unsafe extern "system" fn WaitForProcessServerEnd<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::WaitForProcessServerEnd(this, core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn IsKernelDebuggerEnabled<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::IsKernelDebuggerEnabled(this).into()
            }
        }
        unsafe extern "system" fn TerminateCurrentProcess<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::TerminateCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn DetachCurrentProcess<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::DetachCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn AbandonCurrentProcess<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AbandonCurrentProcess(this).into()
            }
        }
        unsafe extern "system" fn GetRunningProcessSystemIdByExecutableNameWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, exename: windows_core::PCWSTR, flags: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetRunningProcessSystemIdByExecutableNameWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&exename), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRunningProcessDescriptionWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetRunningProcessDescriptionWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&systemid), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&exename), core::mem::transmute_copy(&exenamesize), core::mem::transmute_copy(&actualexenamesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&actualdescriptionsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttachWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, commandline: windows_core::PCWSTR, createflags: u32, processid: u32, attachflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessAndAttachWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&createflags), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OpenDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle)).into()
            }
        }
        unsafe extern "system" fn WriteDumpFileWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, qualifier: u32, formatflags: u32, comment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::WriteDumpFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&qualifier), core::mem::transmute_copy(&formatflags), core::mem::transmute(&comment)).into()
            }
        }
        unsafe extern "system" fn AddDumpInformationFileWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AddDumpInformationFileWide(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberDumpFiles<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetNumberDumpFiles(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFile<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetDumpFile(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetDumpFileWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetDumpFileWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn AttachKernelWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, connectoptions: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::AttachKernelWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&connectoptions)).into()
            }
        }
        unsafe extern "system" fn GetKernelConnectionOptionsWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, optionssize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetKernelConnectionOptionsWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&optionssize)).into()
            }
        }
        unsafe extern "system" fn SetKernelConnectionOptionsWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetKernelConnectionOptionsWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn StartProcessServerWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, options: windows_core::PCWSTR, reserved: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::StartProcessServerWide(this, core::mem::transmute_copy(&flags), core::mem::transmute(&options), core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ConnectProcessServerWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, remoteoptions: windows_core::PCWSTR, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::ConnectProcessServerWide(this, core::mem::transmute(&remoteoptions)) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartServerWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::StartServerWide(this, core::mem::transmute(&options)).into()
            }
        }
        unsafe extern "system" fn OutputServersWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, machine: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OutputServersWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&machine), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetOutputCallbacksWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetOutputCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOutputCallbacksWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn GetOutputLinePrefixWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, prefixsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetOutputLinePrefixWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&prefixsize)).into()
            }
        }
        unsafe extern "system" fn SetOutputLinePrefixWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prefix: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetOutputLinePrefixWide(this, core::mem::transmute(&prefix)).into()
            }
        }
        unsafe extern "system" fn GetIdentityWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, identitysize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetIdentityWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&identitysize)).into()
            }
        }
        unsafe extern "system" fn OutputIdentityWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OutputIdentityWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn GetEventCallbacksWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetEventCallbacksWide(this) {
                    Ok(ok__) => {
                        callbacks.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEventCallbacksWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetEventCallbacksWide(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcess2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcess2Wide<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcess2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessAndAttach2(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn CreateProcessAndAttach2Wide<Identity: IDebugClient8_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::CreateProcessAndAttach2Wide(this, core::mem::transmute_copy(&server), core::mem::transmute(&commandline), core::mem::transmute_copy(&optionsbuffer), core::mem::transmute_copy(&optionsbuffersize), core::mem::transmute(&initialdirectory), core::mem::transmute(&environment), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&attachflags)).into()
            }
        }
        unsafe extern "system" fn PushOutputLinePrefix<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::PushOutputLinePrefix(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PushOutputLinePrefixWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newprefix: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::PushOutputLinePrefixWide(this, core::mem::transmute(&newprefix)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PopOutputLinePrefix<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::PopOutputLinePrefix(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetNumberInputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetNumberInputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberOutputCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetNumberOutputCallbacks(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberEventCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, eventflags: u32, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugClient8_Impl::GetNumberEventCallbacks(this, core::mem::transmute_copy(&eventflags)) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetQuitLockString<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetQuitLockString(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockString<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetQuitLockString(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn GetQuitLockStringWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::GetQuitLockStringWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn SetQuitLockStringWide<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, string: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetQuitLockStringWide(this, core::mem::transmute(&string)).into()
            }
        }
        unsafe extern "system" fn SetEventContextCallbacks<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, callbacks: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetEventContextCallbacks(this, core::mem::transmute_copy(&callbacks)).into()
            }
        }
        unsafe extern "system" fn SetClientContext<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::SetClientContext(this, core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn OpenDumpFileWide2<Identity: IDebugClient8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, filename: windows_core::PCWSTR, filehandle: u64, alternatearch: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugClient8_Impl::OpenDumpFileWide2(this, core::mem::transmute(&filename), core::mem::transmute_copy(&filehandle), core::mem::transmute_copy(&alternatearch)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AttachKernel: AttachKernel::<Identity, OFFSET>,
            GetKernelConnectionOptions: GetKernelConnectionOptions::<Identity, OFFSET>,
            SetKernelConnectionOptions: SetKernelConnectionOptions::<Identity, OFFSET>,
            StartProcessServer: StartProcessServer::<Identity, OFFSET>,
            ConnectProcessServer: ConnectProcessServer::<Identity, OFFSET>,
            DisconnectProcessServer: DisconnectProcessServer::<Identity, OFFSET>,
            GetRunningProcessSystemIds: GetRunningProcessSystemIds::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableName: GetRunningProcessSystemIdByExecutableName::<Identity, OFFSET>,
            GetRunningProcessDescription: GetRunningProcessDescription::<Identity, OFFSET>,
            AttachProcess: AttachProcess::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            CreateProcessAndAttach: CreateProcessAndAttach::<Identity, OFFSET>,
            GetProcessOptions: GetProcessOptions::<Identity, OFFSET>,
            AddProcessOptions: AddProcessOptions::<Identity, OFFSET>,
            RemoveProcessOptions: RemoveProcessOptions::<Identity, OFFSET>,
            SetProcessOptions: SetProcessOptions::<Identity, OFFSET>,
            OpenDumpFile: OpenDumpFile::<Identity, OFFSET>,
            WriteDumpFile: WriteDumpFile::<Identity, OFFSET>,
            ConnectSession: ConnectSession::<Identity, OFFSET>,
            StartServer: StartServer::<Identity, OFFSET>,
            OutputServers: OutputServers::<Identity, OFFSET>,
            TerminateProcesses: TerminateProcesses::<Identity, OFFSET>,
            DetachProcesses: DetachProcesses::<Identity, OFFSET>,
            EndSession: EndSession::<Identity, OFFSET>,
            GetExitCode: GetExitCode::<Identity, OFFSET>,
            DispatchCallbacks: DispatchCallbacks::<Identity, OFFSET>,
            ExitDispatch: ExitDispatch::<Identity, OFFSET>,
            CreateClient: CreateClient::<Identity, OFFSET>,
            GetInputCallbacks: GetInputCallbacks::<Identity, OFFSET>,
            SetInputCallbacks: SetInputCallbacks::<Identity, OFFSET>,
            GetOutputCallbacks: GetOutputCallbacks::<Identity, OFFSET>,
            SetOutputCallbacks: SetOutputCallbacks::<Identity, OFFSET>,
            GetOutputMask: GetOutputMask::<Identity, OFFSET>,
            SetOutputMask: SetOutputMask::<Identity, OFFSET>,
            GetOtherOutputMask: GetOtherOutputMask::<Identity, OFFSET>,
            SetOtherOutputMask: SetOtherOutputMask::<Identity, OFFSET>,
            GetOutputWidth: GetOutputWidth::<Identity, OFFSET>,
            SetOutputWidth: SetOutputWidth::<Identity, OFFSET>,
            GetOutputLinePrefix: GetOutputLinePrefix::<Identity, OFFSET>,
            SetOutputLinePrefix: SetOutputLinePrefix::<Identity, OFFSET>,
            GetIdentity: GetIdentity::<Identity, OFFSET>,
            OutputIdentity: OutputIdentity::<Identity, OFFSET>,
            GetEventCallbacks: GetEventCallbacks::<Identity, OFFSET>,
            SetEventCallbacks: SetEventCallbacks::<Identity, OFFSET>,
            FlushCallbacks: FlushCallbacks::<Identity, OFFSET>,
            WriteDumpFile2: WriteDumpFile2::<Identity, OFFSET>,
            AddDumpInformationFile: AddDumpInformationFile::<Identity, OFFSET>,
            EndProcessServer: EndProcessServer::<Identity, OFFSET>,
            WaitForProcessServerEnd: WaitForProcessServerEnd::<Identity, OFFSET>,
            IsKernelDebuggerEnabled: IsKernelDebuggerEnabled::<Identity, OFFSET>,
            TerminateCurrentProcess: TerminateCurrentProcess::<Identity, OFFSET>,
            DetachCurrentProcess: DetachCurrentProcess::<Identity, OFFSET>,
            AbandonCurrentProcess: AbandonCurrentProcess::<Identity, OFFSET>,
            GetRunningProcessSystemIdByExecutableNameWide: GetRunningProcessSystemIdByExecutableNameWide::<Identity, OFFSET>,
            GetRunningProcessDescriptionWide: GetRunningProcessDescriptionWide::<Identity, OFFSET>,
            CreateProcessWide: CreateProcessWide::<Identity, OFFSET>,
            CreateProcessAndAttachWide: CreateProcessAndAttachWide::<Identity, OFFSET>,
            OpenDumpFileWide: OpenDumpFileWide::<Identity, OFFSET>,
            WriteDumpFileWide: WriteDumpFileWide::<Identity, OFFSET>,
            AddDumpInformationFileWide: AddDumpInformationFileWide::<Identity, OFFSET>,
            GetNumberDumpFiles: GetNumberDumpFiles::<Identity, OFFSET>,
            GetDumpFile: GetDumpFile::<Identity, OFFSET>,
            GetDumpFileWide: GetDumpFileWide::<Identity, OFFSET>,
            AttachKernelWide: AttachKernelWide::<Identity, OFFSET>,
            GetKernelConnectionOptionsWide: GetKernelConnectionOptionsWide::<Identity, OFFSET>,
            SetKernelConnectionOptionsWide: SetKernelConnectionOptionsWide::<Identity, OFFSET>,
            StartProcessServerWide: StartProcessServerWide::<Identity, OFFSET>,
            ConnectProcessServerWide: ConnectProcessServerWide::<Identity, OFFSET>,
            StartServerWide: StartServerWide::<Identity, OFFSET>,
            OutputServersWide: OutputServersWide::<Identity, OFFSET>,
            GetOutputCallbacksWide: GetOutputCallbacksWide::<Identity, OFFSET>,
            SetOutputCallbacksWide: SetOutputCallbacksWide::<Identity, OFFSET>,
            GetOutputLinePrefixWide: GetOutputLinePrefixWide::<Identity, OFFSET>,
            SetOutputLinePrefixWide: SetOutputLinePrefixWide::<Identity, OFFSET>,
            GetIdentityWide: GetIdentityWide::<Identity, OFFSET>,
            OutputIdentityWide: OutputIdentityWide::<Identity, OFFSET>,
            GetEventCallbacksWide: GetEventCallbacksWide::<Identity, OFFSET>,
            SetEventCallbacksWide: SetEventCallbacksWide::<Identity, OFFSET>,
            CreateProcess2: CreateProcess2::<Identity, OFFSET>,
            CreateProcess2Wide: CreateProcess2Wide::<Identity, OFFSET>,
            CreateProcessAndAttach2: CreateProcessAndAttach2::<Identity, OFFSET>,
            CreateProcessAndAttach2Wide: CreateProcessAndAttach2Wide::<Identity, OFFSET>,
            PushOutputLinePrefix: PushOutputLinePrefix::<Identity, OFFSET>,
            PushOutputLinePrefixWide: PushOutputLinePrefixWide::<Identity, OFFSET>,
            PopOutputLinePrefix: PopOutputLinePrefix::<Identity, OFFSET>,
            GetNumberInputCallbacks: GetNumberInputCallbacks::<Identity, OFFSET>,
            GetNumberOutputCallbacks: GetNumberOutputCallbacks::<Identity, OFFSET>,
            GetNumberEventCallbacks: GetNumberEventCallbacks::<Identity, OFFSET>,
            GetQuitLockString: GetQuitLockString::<Identity, OFFSET>,
            SetQuitLockString: SetQuitLockString::<Identity, OFFSET>,
            GetQuitLockStringWide: GetQuitLockStringWide::<Identity, OFFSET>,
            SetQuitLockStringWide: SetQuitLockStringWide::<Identity, OFFSET>,
            SetEventContextCallbacks: SetEventContextCallbacks::<Identity, OFFSET>,
            SetClientContext: SetClientContext::<Identity, OFFSET>,
            OpenDumpFileWide2: OpenDumpFileWide2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugClient8 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugClient8 {}
windows_core::imp::define_interface!(IDebugControl, IDebugControl_Vtbl, 0x5182e668_105e_416e_ad92_24ef800424ba);
windows_core::imp::interface_hierarchy!(IDebugControl, windows_core::IUnknown);
impl IDebugControl {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl_Vtbl {
    pub const fn new<Identity: IDebugControl_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl {}
windows_core::imp::define_interface!(IDebugControl2, IDebugControl2_Vtbl, 0xd4366723_44df_4bed_8c7e_4c05424f4588);
windows_core::imp::interface_hierarchy!(IDebugControl2, windows_core::IUnknown);
impl IDebugControl2 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl2_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl2_Vtbl {
    pub const fn new<Identity: IDebugControl2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl2_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl2_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl2 {}
windows_core::imp::define_interface!(IDebugControl3, IDebugControl3_Vtbl, 0x7df74a86_b03f_407f_90ab_a20dadcead08);
windows_core::imp::interface_hierarchy!(IDebugControl3, windows_core::IUnknown);
impl IDebugControl3 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetAssemblyOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAssemblyOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetExpressionSyntax(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExpressionSyntax)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByName)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberExpressionSyntaxes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetNumberEvents(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEvents)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventIndexDescription<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescription)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentEventIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetNextEventIndex)(windows_core::Interface::as_raw(self), relation, value, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl3_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetAssemblyOptions(&self) -> windows_core::Result<u32>;
    fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetExpressionSyntax(&self) -> windows_core::Result<u32>;
    fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByName(&self, abbrevname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32>;
    fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetNumberEvents(&self) -> windows_core::Result<u32>;
    fn GetEventIndexDescription(&self, index: u32, which: u32, buffer: &windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentEventIndex(&self) -> windows_core::Result<u32>;
    fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl3_Vtbl {
    pub const fn new<Identity: IDebugControl3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetAssemblyOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetAssemblyOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddAssemblyOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::AddAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveAssemblyOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::RemoveAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetAssemblyOptions<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntax<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetExpressionSyntax(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExpressionSyntax<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetExpressionSyntax(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByName<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::SetExpressionSyntaxByName(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetNumberExpressionSyntaxes<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberExpressionSyntaxes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNames<Identity: IDebugControl3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetExpressionSyntaxNames(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetNumberEvents<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, events: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetNumberEvents(this) {
                    Ok(ok__) => {
                        events.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventIndexDescription<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl3_Impl::GetEventIndexDescription(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentEventIndex<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::GetCurrentEventIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNextEventIndex<Identity: IDebugControl3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl3_Impl::SetNextEventIndex(this, core::mem::transmute_copy(&relation), core::mem::transmute_copy(&value)) {
                    Ok(ok__) => {
                        nextindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
            GetAssemblyOptions: GetAssemblyOptions::<Identity, OFFSET>,
            AddAssemblyOptions: AddAssemblyOptions::<Identity, OFFSET>,
            RemoveAssemblyOptions: RemoveAssemblyOptions::<Identity, OFFSET>,
            SetAssemblyOptions: SetAssemblyOptions::<Identity, OFFSET>,
            GetExpressionSyntax: GetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntax: SetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntaxByName: SetExpressionSyntaxByName::<Identity, OFFSET>,
            GetNumberExpressionSyntaxes: GetNumberExpressionSyntaxes::<Identity, OFFSET>,
            GetExpressionSyntaxNames: GetExpressionSyntaxNames::<Identity, OFFSET>,
            GetNumberEvents: GetNumberEvents::<Identity, OFFSET>,
            GetEventIndexDescription: GetEventIndexDescription::<Identity, OFFSET>,
            GetCurrentEventIndex: GetCurrentEventIndex::<Identity, OFFSET>,
            SetNextEventIndex: SetNextEventIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl3 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl3 {}
windows_core::imp::define_interface!(IDebugControl4, IDebugControl4_Vtbl, 0x94e60ce9_9b41_4b19_9fc0_6d9eb35272b3);
windows_core::imp::interface_hierarchy!(IDebugControl4, windows_core::IUnknown);
impl IDebugControl4 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetAssemblyOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAssemblyOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetExpressionSyntax(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExpressionSyntax)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByName)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberExpressionSyntaxes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetNumberEvents(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEvents)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventIndexDescription<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescription)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentEventIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetNextEventIndex)(windows_core::Interface::as_raw(self), relation, value, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLogFileWide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFileWide<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFileWide)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InputWide)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInputWide)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn OutputWide<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputWide)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaListWide<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaListWide)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutputWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaListWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPromptWide<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaListWide<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AssembleWide<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AssembleWide)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: Option<&mut [u16]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: Option<&mut [u16]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacroWide<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacroWide)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateWide)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ExecuteWide<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteWide)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFileWide<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFileWide)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex2)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById2)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint2)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint2)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtensionWide)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPathWide)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtensionWide<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtensionWide)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunctionWide<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunctionWide)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: Option<&mut [u16]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgumentWide)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u16]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformationWide)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u16]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u16]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacementWide)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacementWide)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEventIndexDescriptionWide<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescriptionWide)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLogFile2(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2Wide)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: Option<*mut u32>, kdminor: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemVersionValues)(windows_core::Interface::as_raw(self), platformid as _, win32major as _, win32minor as _, kdmajor.unwrap_or(core::mem::zeroed()) as _, kdminor.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetContextStackTrace(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTrace)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTrace)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: Option<*mut core::ffi::c_void>, contextsize: u32, contextused: Option<*mut u32>, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStoredEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, context.unwrap_or(core::mem::zeroed()) as _, contextsize, contextused.unwrap_or(core::mem::zeroed()) as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatus(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u8]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatus)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u16]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatusWide)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetManagedStatus)(windows_core::Interface::as_raw(self), flags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub InputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EvaluateWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub ExecuteWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExtensionFunctionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    pub GetEventFilterTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetStoredEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl4_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetAssemblyOptions(&self) -> windows_core::Result<u32>;
    fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetExpressionSyntax(&self) -> windows_core::Result<u32>;
    fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByName(&self, abbrevname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32>;
    fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetNumberEvents(&self) -> windows_core::Result<u32>;
    fn GetEventIndexDescription(&self, index: u32, which: u32, buffer: &windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentEventIndex(&self) -> windows_core::Result<u32>;
    fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32>;
    fn GetLogFileWide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFileWide(&self, file: &windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn InputWide(&self, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInputWide(&self, buffer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputWide(&self, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputVaListWide(&self, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutputWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaListWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPromptWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputPromptVaListWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptTextWide(&self, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn AssembleWide(&self, offset: u64, instr: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn DisassembleWide(&self, offset: u64, flags: u32, buffer: windows_core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetTextMacroWide(&self, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacroWide(&self, slot: u32, r#macro: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EvaluateWide(&self, expression: &windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn ExecuteWide(&self, outputcontrol: u32, command: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFileWide(&self, outputcontrol: u32, commandfile: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn RemoveBreakpoint2(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>) -> windows_core::Result<()>;
    fn AddExtensionWide(&self, path: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u64>;
    fn GetExtensionByPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn CallExtensionWide(&self, handle: u64, function: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExtensionFunctionWide(&self, handle: u64, funcname: &windows_core::PCWSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetEventFilterTextWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgumentWide(&self, index: u32, argument: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetLastEventInformationWide(&self, 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::Result<()>;
    fn GetTextReplacementWide(&self, 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::Result<()>;
    fn SetTextReplacementWide(&self, srctext: &windows_core::PCWSTR, dsttext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByNameWide(&self, abbrevname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEventIndexDescriptionWide(&self, index: u32, which: u32, buffer: &windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetLogFile2(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2(&self, file: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetLogFile2Wide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2Wide(&self, file: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionString(&self, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionStringWide(&self, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetContextStackTrace(&self, 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::Result<()>;
    fn OutputContextStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetStoredEventInformation(&self, 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::Result<()>;
    fn GetManagedStatus(&self, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn GetManagedStatusWide(&self, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl4_Vtbl {
    pub const fn new<Identity: IDebugControl4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetAssemblyOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetAssemblyOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddAssemblyOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::AddAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveAssemblyOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetAssemblyOptions<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntax<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExpressionSyntax(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExpressionSyntax<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExpressionSyntax(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByName<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExpressionSyntaxByName(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetNumberExpressionSyntaxes<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberExpressionSyntaxes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNames<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetExpressionSyntaxNames(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetNumberEvents<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, events: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetNumberEvents(this) {
                    Ok(ok__) => {
                        events.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventIndexDescription<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventIndexDescription(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentEventIndex<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetCurrentEventIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNextEventIndex<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::SetNextEventIndex(this, core::mem::transmute_copy(&relation), core::mem::transmute_copy(&value)) {
                    Ok(ok__) => {
                        nextindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLogFileWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLogFileWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFileWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OpenLogFileWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn InputWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::InputWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInputWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ReturnInputWide(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn OutputWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaListWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputVaListWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ControlledOutputWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaListWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ControlledOutputVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPromptWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputPromptWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaListWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputPromptVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptTextWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetPromptTextWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn AssembleWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCWSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::AssembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisassembleWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::DisassembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNamesWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetProcessorTypeNamesWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetTextMacroWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacroWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn EvaluateWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::EvaluateWide(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn ExecuteWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ExecuteWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFileWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ExecuteCommandFileWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetBreakpointByIndex2(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetBreakpointById2(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddBreakpoint2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::AddBreakpoint2(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::RemoveBreakpoint2(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtensionWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::AddExtensionWide(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExtensionByPathWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExtensionByPathWide(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtensionWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCWSTR, arguments: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::CallExtensionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunctionWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl4_Impl::GetExtensionFunctionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventFilterTextWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventFilterTextWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommandWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommandWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgumentWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgumentWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommandWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommandWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformationWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLastEventInformationWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetTextReplacementWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacementWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCWSTR, dsttext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByNameWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::SetExpressionSyntaxByNameWide(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNamesWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetExpressionSyntaxNamesWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEventIndexDescriptionWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetEventIndexDescriptionWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLogFile2(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OpenLogFile2(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2Wide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetLogFile2Wide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2Wide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OpenLogFile2Wide(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionValues<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSystemVersionValues(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&win32major), core::mem::transmute_copy(&win32minor), core::mem::transmute_copy(&kdmajor), core::mem::transmute_copy(&kdminor)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionString<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSystemVersionString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionStringWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetSystemVersionStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTrace<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetContextStackTrace(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTrace<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::OutputContextStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStoredEventInformation<Identity: IDebugControl4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetStoredEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize), core::mem::transmute_copy(&contextused), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatus<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetManagedStatus(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatusWide<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::GetManagedStatusWide(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn ResetManagedStatus<Identity: IDebugControl4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl4_Impl::ResetManagedStatus(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
            GetAssemblyOptions: GetAssemblyOptions::<Identity, OFFSET>,
            AddAssemblyOptions: AddAssemblyOptions::<Identity, OFFSET>,
            RemoveAssemblyOptions: RemoveAssemblyOptions::<Identity, OFFSET>,
            SetAssemblyOptions: SetAssemblyOptions::<Identity, OFFSET>,
            GetExpressionSyntax: GetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntax: SetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntaxByName: SetExpressionSyntaxByName::<Identity, OFFSET>,
            GetNumberExpressionSyntaxes: GetNumberExpressionSyntaxes::<Identity, OFFSET>,
            GetExpressionSyntaxNames: GetExpressionSyntaxNames::<Identity, OFFSET>,
            GetNumberEvents: GetNumberEvents::<Identity, OFFSET>,
            GetEventIndexDescription: GetEventIndexDescription::<Identity, OFFSET>,
            GetCurrentEventIndex: GetCurrentEventIndex::<Identity, OFFSET>,
            SetNextEventIndex: SetNextEventIndex::<Identity, OFFSET>,
            GetLogFileWide: GetLogFileWide::<Identity, OFFSET>,
            OpenLogFileWide: OpenLogFileWide::<Identity, OFFSET>,
            InputWide: InputWide::<Identity, OFFSET>,
            ReturnInputWide: ReturnInputWide::<Identity, OFFSET>,
            OutputWide: OutputWide::<Identity, OFFSET>,
            OutputVaListWide: OutputVaListWide::<Identity, OFFSET>,
            ControlledOutputWide: ControlledOutputWide::<Identity, OFFSET>,
            ControlledOutputVaListWide: ControlledOutputVaListWide::<Identity, OFFSET>,
            OutputPromptWide: OutputPromptWide::<Identity, OFFSET>,
            OutputPromptVaListWide: OutputPromptVaListWide::<Identity, OFFSET>,
            GetPromptTextWide: GetPromptTextWide::<Identity, OFFSET>,
            AssembleWide: AssembleWide::<Identity, OFFSET>,
            DisassembleWide: DisassembleWide::<Identity, OFFSET>,
            GetProcessorTypeNamesWide: GetProcessorTypeNamesWide::<Identity, OFFSET>,
            GetTextMacroWide: GetTextMacroWide::<Identity, OFFSET>,
            SetTextMacroWide: SetTextMacroWide::<Identity, OFFSET>,
            EvaluateWide: EvaluateWide::<Identity, OFFSET>,
            ExecuteWide: ExecuteWide::<Identity, OFFSET>,
            ExecuteCommandFileWide: ExecuteCommandFileWide::<Identity, OFFSET>,
            GetBreakpointByIndex2: GetBreakpointByIndex2::<Identity, OFFSET>,
            GetBreakpointById2: GetBreakpointById2::<Identity, OFFSET>,
            AddBreakpoint2: AddBreakpoint2::<Identity, OFFSET>,
            RemoveBreakpoint2: RemoveBreakpoint2::<Identity, OFFSET>,
            AddExtensionWide: AddExtensionWide::<Identity, OFFSET>,
            GetExtensionByPathWide: GetExtensionByPathWide::<Identity, OFFSET>,
            CallExtensionWide: CallExtensionWide::<Identity, OFFSET>,
            GetExtensionFunctionWide: GetExtensionFunctionWide::<Identity, OFFSET>,
            GetEventFilterTextWide: GetEventFilterTextWide::<Identity, OFFSET>,
            GetEventFilterCommandWide: GetEventFilterCommandWide::<Identity, OFFSET>,
            SetEventFilterCommandWide: SetEventFilterCommandWide::<Identity, OFFSET>,
            GetSpecificFilterArgumentWide: GetSpecificFilterArgumentWide::<Identity, OFFSET>,
            SetSpecificFilterArgumentWide: SetSpecificFilterArgumentWide::<Identity, OFFSET>,
            GetExceptionFilterSecondCommandWide: GetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            SetExceptionFilterSecondCommandWide: SetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            GetLastEventInformationWide: GetLastEventInformationWide::<Identity, OFFSET>,
            GetTextReplacementWide: GetTextReplacementWide::<Identity, OFFSET>,
            SetTextReplacementWide: SetTextReplacementWide::<Identity, OFFSET>,
            SetExpressionSyntaxByNameWide: SetExpressionSyntaxByNameWide::<Identity, OFFSET>,
            GetExpressionSyntaxNamesWide: GetExpressionSyntaxNamesWide::<Identity, OFFSET>,
            GetEventIndexDescriptionWide: GetEventIndexDescriptionWide::<Identity, OFFSET>,
            GetLogFile2: GetLogFile2::<Identity, OFFSET>,
            OpenLogFile2: OpenLogFile2::<Identity, OFFSET>,
            GetLogFile2Wide: GetLogFile2Wide::<Identity, OFFSET>,
            OpenLogFile2Wide: OpenLogFile2Wide::<Identity, OFFSET>,
            GetSystemVersionValues: GetSystemVersionValues::<Identity, OFFSET>,
            GetSystemVersionString: GetSystemVersionString::<Identity, OFFSET>,
            GetSystemVersionStringWide: GetSystemVersionStringWide::<Identity, OFFSET>,
            GetContextStackTrace: GetContextStackTrace::<Identity, OFFSET>,
            OutputContextStackTrace: OutputContextStackTrace::<Identity, OFFSET>,
            GetStoredEventInformation: GetStoredEventInformation::<Identity, OFFSET>,
            GetManagedStatus: GetManagedStatus::<Identity, OFFSET>,
            GetManagedStatusWide: GetManagedStatusWide::<Identity, OFFSET>,
            ResetManagedStatus: ResetManagedStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl4 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl4 {}
windows_core::imp::define_interface!(IDebugControl5, IDebugControl5_Vtbl, 0xb2ffe162_2412_429f_8d1d_5bf6dd824696);
windows_core::imp::interface_hierarchy!(IDebugControl5, windows_core::IUnknown);
impl IDebugControl5 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetAssemblyOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAssemblyOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetExpressionSyntax(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExpressionSyntax)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByName)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberExpressionSyntaxes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetNumberEvents(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEvents)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventIndexDescription<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescription)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentEventIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetNextEventIndex)(windows_core::Interface::as_raw(self), relation, value, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLogFileWide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFileWide<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFileWide)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InputWide)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInputWide)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn OutputWide<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputWide)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaListWide<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaListWide)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutputWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaListWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPromptWide<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaListWide<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AssembleWide<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AssembleWide)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: Option<&mut [u16]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: Option<&mut [u16]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacroWide<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacroWide)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateWide)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ExecuteWide<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteWide)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFileWide<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFileWide)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex2)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById2)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint2)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint2)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtensionWide)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPathWide)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtensionWide<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtensionWide)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunctionWide<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunctionWide)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: Option<&mut [u16]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgumentWide)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u16]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformationWide)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u16]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u16]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacementWide)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacementWide)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEventIndexDescriptionWide<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescriptionWide)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLogFile2(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2Wide)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: Option<*mut u32>, kdminor: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemVersionValues)(windows_core::Interface::as_raw(self), platformid as _, win32major as _, win32minor as _, kdmajor.unwrap_or(core::mem::zeroed()) as _, kdminor.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetContextStackTrace(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTrace)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTrace)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: Option<*mut core::ffi::c_void>, contextsize: u32, contextused: Option<*mut u32>, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStoredEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, context.unwrap_or(core::mem::zeroed()) as _, contextsize, contextused.unwrap_or(core::mem::zeroed()) as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatus(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u8]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatus)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u16]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatusWide)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetManagedStatus)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTraceEx)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTraceEx)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTraceEx)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByGuid)(windows_core::Interface::as_raw(self), guid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl5_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub InputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EvaluateWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub ExecuteWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExtensionFunctionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    pub GetEventFilterTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetStoredEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME_EX, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, u32) -> windows_core::HRESULT,
    pub GetContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME_EX, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetBreakpointByGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl5_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetAssemblyOptions(&self) -> windows_core::Result<u32>;
    fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetExpressionSyntax(&self) -> windows_core::Result<u32>;
    fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByName(&self, abbrevname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32>;
    fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetNumberEvents(&self) -> windows_core::Result<u32>;
    fn GetEventIndexDescription(&self, index: u32, which: u32, buffer: &windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentEventIndex(&self) -> windows_core::Result<u32>;
    fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32>;
    fn GetLogFileWide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFileWide(&self, file: &windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn InputWide(&self, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInputWide(&self, buffer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputWide(&self, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputVaListWide(&self, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutputWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaListWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPromptWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputPromptVaListWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptTextWide(&self, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn AssembleWide(&self, offset: u64, instr: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn DisassembleWide(&self, offset: u64, flags: u32, buffer: windows_core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetTextMacroWide(&self, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacroWide(&self, slot: u32, r#macro: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EvaluateWide(&self, expression: &windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn ExecuteWide(&self, outputcontrol: u32, command: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFileWide(&self, outputcontrol: u32, commandfile: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn RemoveBreakpoint2(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>) -> windows_core::Result<()>;
    fn AddExtensionWide(&self, path: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u64>;
    fn GetExtensionByPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn CallExtensionWide(&self, handle: u64, function: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExtensionFunctionWide(&self, handle: u64, funcname: &windows_core::PCWSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetEventFilterTextWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgumentWide(&self, index: u32, argument: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetLastEventInformationWide(&self, 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::Result<()>;
    fn GetTextReplacementWide(&self, 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::Result<()>;
    fn SetTextReplacementWide(&self, srctext: &windows_core::PCWSTR, dsttext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByNameWide(&self, abbrevname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEventIndexDescriptionWide(&self, index: u32, which: u32, buffer: &windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetLogFile2(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2(&self, file: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetLogFile2Wide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2Wide(&self, file: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionString(&self, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionStringWide(&self, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetContextStackTrace(&self, 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::Result<()>;
    fn OutputContextStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetStoredEventInformation(&self, 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::Result<()>;
    fn GetManagedStatus(&self, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn GetManagedStatusWide(&self, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()>;
    fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn OutputStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetContextStackTraceEx(&self, 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::Result<()>;
    fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl5_Vtbl {
    pub const fn new<Identity: IDebugControl5_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetAssemblyOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetAssemblyOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddAssemblyOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::AddAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveAssemblyOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetAssemblyOptions<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntax<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExpressionSyntax(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExpressionSyntax<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExpressionSyntax(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByName<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExpressionSyntaxByName(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetNumberExpressionSyntaxes<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberExpressionSyntaxes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNames<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetExpressionSyntaxNames(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetNumberEvents<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, events: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetNumberEvents(this) {
                    Ok(ok__) => {
                        events.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventIndexDescription<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventIndexDescription(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentEventIndex<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetCurrentEventIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNextEventIndex<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::SetNextEventIndex(this, core::mem::transmute_copy(&relation), core::mem::transmute_copy(&value)) {
                    Ok(ok__) => {
                        nextindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLogFileWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLogFileWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFileWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OpenLogFileWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn InputWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::InputWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInputWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ReturnInputWide(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn OutputWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaListWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputVaListWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ControlledOutputWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaListWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ControlledOutputVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPromptWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputPromptWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaListWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputPromptVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptTextWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetPromptTextWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn AssembleWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCWSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::AssembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisassembleWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::DisassembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNamesWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetProcessorTypeNamesWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetTextMacroWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacroWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn EvaluateWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::EvaluateWide(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn ExecuteWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ExecuteWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFileWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ExecuteCommandFileWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetBreakpointByIndex2(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetBreakpointById2(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddBreakpoint2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::AddBreakpoint2(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::RemoveBreakpoint2(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtensionWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::AddExtensionWide(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExtensionByPathWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExtensionByPathWide(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtensionWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCWSTR, arguments: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::CallExtensionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunctionWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetExtensionFunctionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventFilterTextWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventFilterTextWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommandWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommandWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgumentWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgumentWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommandWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommandWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformationWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLastEventInformationWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetTextReplacementWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacementWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCWSTR, dsttext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByNameWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::SetExpressionSyntaxByNameWide(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNamesWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetExpressionSyntaxNamesWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEventIndexDescriptionWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetEventIndexDescriptionWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLogFile2(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OpenLogFile2(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2Wide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetLogFile2Wide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2Wide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OpenLogFile2Wide(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionValues<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSystemVersionValues(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&win32major), core::mem::transmute_copy(&win32minor), core::mem::transmute_copy(&kdmajor), core::mem::transmute_copy(&kdminor)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionString<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSystemVersionString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionStringWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetSystemVersionStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTrace<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetContextStackTrace(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTrace<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputContextStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStoredEventInformation<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetStoredEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize), core::mem::transmute_copy(&contextused), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatus<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetManagedStatus(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatusWide<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetManagedStatusWide(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn ResetManagedStatus<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::ResetManagedStatus(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStackTraceEx<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetStackTraceEx(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputStackTraceEx<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTraceEx<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::GetContextStackTraceEx(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTraceEx<Identity: IDebugControl5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl5_Impl::OutputContextStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByGuid<Identity: IDebugControl5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl5_Impl::GetBreakpointByGuid(this, core::mem::transmute_copy(&guid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
            GetAssemblyOptions: GetAssemblyOptions::<Identity, OFFSET>,
            AddAssemblyOptions: AddAssemblyOptions::<Identity, OFFSET>,
            RemoveAssemblyOptions: RemoveAssemblyOptions::<Identity, OFFSET>,
            SetAssemblyOptions: SetAssemblyOptions::<Identity, OFFSET>,
            GetExpressionSyntax: GetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntax: SetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntaxByName: SetExpressionSyntaxByName::<Identity, OFFSET>,
            GetNumberExpressionSyntaxes: GetNumberExpressionSyntaxes::<Identity, OFFSET>,
            GetExpressionSyntaxNames: GetExpressionSyntaxNames::<Identity, OFFSET>,
            GetNumberEvents: GetNumberEvents::<Identity, OFFSET>,
            GetEventIndexDescription: GetEventIndexDescription::<Identity, OFFSET>,
            GetCurrentEventIndex: GetCurrentEventIndex::<Identity, OFFSET>,
            SetNextEventIndex: SetNextEventIndex::<Identity, OFFSET>,
            GetLogFileWide: GetLogFileWide::<Identity, OFFSET>,
            OpenLogFileWide: OpenLogFileWide::<Identity, OFFSET>,
            InputWide: InputWide::<Identity, OFFSET>,
            ReturnInputWide: ReturnInputWide::<Identity, OFFSET>,
            OutputWide: OutputWide::<Identity, OFFSET>,
            OutputVaListWide: OutputVaListWide::<Identity, OFFSET>,
            ControlledOutputWide: ControlledOutputWide::<Identity, OFFSET>,
            ControlledOutputVaListWide: ControlledOutputVaListWide::<Identity, OFFSET>,
            OutputPromptWide: OutputPromptWide::<Identity, OFFSET>,
            OutputPromptVaListWide: OutputPromptVaListWide::<Identity, OFFSET>,
            GetPromptTextWide: GetPromptTextWide::<Identity, OFFSET>,
            AssembleWide: AssembleWide::<Identity, OFFSET>,
            DisassembleWide: DisassembleWide::<Identity, OFFSET>,
            GetProcessorTypeNamesWide: GetProcessorTypeNamesWide::<Identity, OFFSET>,
            GetTextMacroWide: GetTextMacroWide::<Identity, OFFSET>,
            SetTextMacroWide: SetTextMacroWide::<Identity, OFFSET>,
            EvaluateWide: EvaluateWide::<Identity, OFFSET>,
            ExecuteWide: ExecuteWide::<Identity, OFFSET>,
            ExecuteCommandFileWide: ExecuteCommandFileWide::<Identity, OFFSET>,
            GetBreakpointByIndex2: GetBreakpointByIndex2::<Identity, OFFSET>,
            GetBreakpointById2: GetBreakpointById2::<Identity, OFFSET>,
            AddBreakpoint2: AddBreakpoint2::<Identity, OFFSET>,
            RemoveBreakpoint2: RemoveBreakpoint2::<Identity, OFFSET>,
            AddExtensionWide: AddExtensionWide::<Identity, OFFSET>,
            GetExtensionByPathWide: GetExtensionByPathWide::<Identity, OFFSET>,
            CallExtensionWide: CallExtensionWide::<Identity, OFFSET>,
            GetExtensionFunctionWide: GetExtensionFunctionWide::<Identity, OFFSET>,
            GetEventFilterTextWide: GetEventFilterTextWide::<Identity, OFFSET>,
            GetEventFilterCommandWide: GetEventFilterCommandWide::<Identity, OFFSET>,
            SetEventFilterCommandWide: SetEventFilterCommandWide::<Identity, OFFSET>,
            GetSpecificFilterArgumentWide: GetSpecificFilterArgumentWide::<Identity, OFFSET>,
            SetSpecificFilterArgumentWide: SetSpecificFilterArgumentWide::<Identity, OFFSET>,
            GetExceptionFilterSecondCommandWide: GetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            SetExceptionFilterSecondCommandWide: SetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            GetLastEventInformationWide: GetLastEventInformationWide::<Identity, OFFSET>,
            GetTextReplacementWide: GetTextReplacementWide::<Identity, OFFSET>,
            SetTextReplacementWide: SetTextReplacementWide::<Identity, OFFSET>,
            SetExpressionSyntaxByNameWide: SetExpressionSyntaxByNameWide::<Identity, OFFSET>,
            GetExpressionSyntaxNamesWide: GetExpressionSyntaxNamesWide::<Identity, OFFSET>,
            GetEventIndexDescriptionWide: GetEventIndexDescriptionWide::<Identity, OFFSET>,
            GetLogFile2: GetLogFile2::<Identity, OFFSET>,
            OpenLogFile2: OpenLogFile2::<Identity, OFFSET>,
            GetLogFile2Wide: GetLogFile2Wide::<Identity, OFFSET>,
            OpenLogFile2Wide: OpenLogFile2Wide::<Identity, OFFSET>,
            GetSystemVersionValues: GetSystemVersionValues::<Identity, OFFSET>,
            GetSystemVersionString: GetSystemVersionString::<Identity, OFFSET>,
            GetSystemVersionStringWide: GetSystemVersionStringWide::<Identity, OFFSET>,
            GetContextStackTrace: GetContextStackTrace::<Identity, OFFSET>,
            OutputContextStackTrace: OutputContextStackTrace::<Identity, OFFSET>,
            GetStoredEventInformation: GetStoredEventInformation::<Identity, OFFSET>,
            GetManagedStatus: GetManagedStatus::<Identity, OFFSET>,
            GetManagedStatusWide: GetManagedStatusWide::<Identity, OFFSET>,
            ResetManagedStatus: ResetManagedStatus::<Identity, OFFSET>,
            GetStackTraceEx: GetStackTraceEx::<Identity, OFFSET>,
            OutputStackTraceEx: OutputStackTraceEx::<Identity, OFFSET>,
            GetContextStackTraceEx: GetContextStackTraceEx::<Identity, OFFSET>,
            OutputContextStackTraceEx: OutputContextStackTraceEx::<Identity, OFFSET>,
            GetBreakpointByGuid: GetBreakpointByGuid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl5 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl5 {}
windows_core::imp::define_interface!(IDebugControl6, IDebugControl6_Vtbl, 0xbc0d583f_126d_43a1_9cc4_a860ab1d537b);
windows_core::imp::interface_hierarchy!(IDebugControl6, windows_core::IUnknown);
impl IDebugControl6 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetAssemblyOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAssemblyOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetExpressionSyntax(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExpressionSyntax)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByName)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberExpressionSyntaxes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetNumberEvents(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEvents)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventIndexDescription<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescription)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentEventIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetNextEventIndex)(windows_core::Interface::as_raw(self), relation, value, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLogFileWide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFileWide<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFileWide)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InputWide)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInputWide)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn OutputWide<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputWide)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaListWide<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaListWide)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutputWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaListWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPromptWide<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaListWide<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AssembleWide<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AssembleWide)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: Option<&mut [u16]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: Option<&mut [u16]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacroWide<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacroWide)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateWide)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ExecuteWide<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteWide)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFileWide<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFileWide)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex2)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById2)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint2)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint2)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtensionWide)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPathWide)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtensionWide<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtensionWide)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunctionWide<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunctionWide)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: Option<&mut [u16]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgumentWide)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u16]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformationWide)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u16]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u16]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacementWide)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacementWide)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEventIndexDescriptionWide<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescriptionWide)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLogFile2(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2Wide)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: Option<*mut u32>, kdminor: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemVersionValues)(windows_core::Interface::as_raw(self), platformid as _, win32major as _, win32minor as _, kdmajor.unwrap_or(core::mem::zeroed()) as _, kdminor.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetContextStackTrace(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTrace)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTrace)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: Option<*mut core::ffi::c_void>, contextsize: u32, contextused: Option<*mut u32>, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStoredEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, context.unwrap_or(core::mem::zeroed()) as _, contextsize, contextused.unwrap_or(core::mem::zeroed()) as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatus(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u8]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatus)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u16]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatusWide)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetManagedStatus)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTraceEx)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTraceEx)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTraceEx)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByGuid)(windows_core::Interface::as_raw(self), guid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetExecutionStatusEx(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatusEx)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSynchronizationStatus)(windows_core::Interface::as_raw(self), sendsattempted as _, secondssincelastresponse as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl6_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub InputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EvaluateWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub ExecuteWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExtensionFunctionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    pub GetEventFilterTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetStoredEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME_EX, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, u32) -> windows_core::HRESULT,
    pub GetContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME_EX, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetBreakpointByGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetExecutionStatusEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSynchronizationStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl6_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetAssemblyOptions(&self) -> windows_core::Result<u32>;
    fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetExpressionSyntax(&self) -> windows_core::Result<u32>;
    fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByName(&self, abbrevname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32>;
    fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetNumberEvents(&self) -> windows_core::Result<u32>;
    fn GetEventIndexDescription(&self, index: u32, which: u32, buffer: &windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentEventIndex(&self) -> windows_core::Result<u32>;
    fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32>;
    fn GetLogFileWide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFileWide(&self, file: &windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn InputWide(&self, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInputWide(&self, buffer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputWide(&self, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputVaListWide(&self, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutputWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaListWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPromptWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputPromptVaListWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptTextWide(&self, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn AssembleWide(&self, offset: u64, instr: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn DisassembleWide(&self, offset: u64, flags: u32, buffer: windows_core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetTextMacroWide(&self, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacroWide(&self, slot: u32, r#macro: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EvaluateWide(&self, expression: &windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn ExecuteWide(&self, outputcontrol: u32, command: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFileWide(&self, outputcontrol: u32, commandfile: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn RemoveBreakpoint2(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>) -> windows_core::Result<()>;
    fn AddExtensionWide(&self, path: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u64>;
    fn GetExtensionByPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn CallExtensionWide(&self, handle: u64, function: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExtensionFunctionWide(&self, handle: u64, funcname: &windows_core::PCWSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetEventFilterTextWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgumentWide(&self, index: u32, argument: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetLastEventInformationWide(&self, 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::Result<()>;
    fn GetTextReplacementWide(&self, 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::Result<()>;
    fn SetTextReplacementWide(&self, srctext: &windows_core::PCWSTR, dsttext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByNameWide(&self, abbrevname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEventIndexDescriptionWide(&self, index: u32, which: u32, buffer: &windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetLogFile2(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2(&self, file: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetLogFile2Wide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2Wide(&self, file: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionString(&self, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionStringWide(&self, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetContextStackTrace(&self, 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::Result<()>;
    fn OutputContextStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetStoredEventInformation(&self, 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::Result<()>;
    fn GetManagedStatus(&self, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn GetManagedStatusWide(&self, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()>;
    fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn OutputStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetContextStackTraceEx(&self, 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::Result<()>;
    fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3>;
    fn GetExecutionStatusEx(&self) -> windows_core::Result<u32>;
    fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl6_Vtbl {
    pub const fn new<Identity: IDebugControl6_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetAssemblyOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetAssemblyOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddAssemblyOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::AddAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveAssemblyOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetAssemblyOptions<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntax<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExpressionSyntax(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExpressionSyntax<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExpressionSyntax(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByName<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExpressionSyntaxByName(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetNumberExpressionSyntaxes<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberExpressionSyntaxes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNames<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetExpressionSyntaxNames(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetNumberEvents<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, events: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetNumberEvents(this) {
                    Ok(ok__) => {
                        events.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventIndexDescription<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventIndexDescription(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentEventIndex<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetCurrentEventIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNextEventIndex<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::SetNextEventIndex(this, core::mem::transmute_copy(&relation), core::mem::transmute_copy(&value)) {
                    Ok(ok__) => {
                        nextindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLogFileWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLogFileWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFileWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OpenLogFileWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn InputWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::InputWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInputWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ReturnInputWide(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn OutputWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaListWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputVaListWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ControlledOutputWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaListWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ControlledOutputVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPromptWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputPromptWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaListWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputPromptVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptTextWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetPromptTextWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn AssembleWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCWSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::AssembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisassembleWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::DisassembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNamesWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetProcessorTypeNamesWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetTextMacroWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacroWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn EvaluateWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::EvaluateWide(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn ExecuteWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ExecuteWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFileWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ExecuteCommandFileWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetBreakpointByIndex2(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetBreakpointById2(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddBreakpoint2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::AddBreakpoint2(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::RemoveBreakpoint2(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtensionWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::AddExtensionWide(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExtensionByPathWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExtensionByPathWide(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtensionWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCWSTR, arguments: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::CallExtensionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunctionWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExtensionFunctionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventFilterTextWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventFilterTextWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommandWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommandWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgumentWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgumentWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommandWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommandWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformationWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLastEventInformationWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetTextReplacementWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacementWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCWSTR, dsttext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByNameWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::SetExpressionSyntaxByNameWide(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNamesWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetExpressionSyntaxNamesWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEventIndexDescriptionWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetEventIndexDescriptionWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLogFile2(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OpenLogFile2(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2Wide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetLogFile2Wide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2Wide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OpenLogFile2Wide(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionValues<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSystemVersionValues(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&win32major), core::mem::transmute_copy(&win32minor), core::mem::transmute_copy(&kdmajor), core::mem::transmute_copy(&kdminor)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionString<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSystemVersionString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionStringWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSystemVersionStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTrace<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetContextStackTrace(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTrace<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputContextStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStoredEventInformation<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetStoredEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize), core::mem::transmute_copy(&contextused), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatus<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetManagedStatus(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatusWide<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetManagedStatusWide(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn ResetManagedStatus<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::ResetManagedStatus(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStackTraceEx<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetStackTraceEx(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputStackTraceEx<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTraceEx<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetContextStackTraceEx(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTraceEx<Identity: IDebugControl6_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::OutputContextStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByGuid<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetBreakpointByGuid(this, core::mem::transmute_copy(&guid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutionStatusEx<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl6_Impl::GetExecutionStatusEx(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSynchronizationStatus<Identity: IDebugControl6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl6_Impl::GetSynchronizationStatus(this, core::mem::transmute_copy(&sendsattempted), core::mem::transmute_copy(&secondssincelastresponse)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
            GetAssemblyOptions: GetAssemblyOptions::<Identity, OFFSET>,
            AddAssemblyOptions: AddAssemblyOptions::<Identity, OFFSET>,
            RemoveAssemblyOptions: RemoveAssemblyOptions::<Identity, OFFSET>,
            SetAssemblyOptions: SetAssemblyOptions::<Identity, OFFSET>,
            GetExpressionSyntax: GetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntax: SetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntaxByName: SetExpressionSyntaxByName::<Identity, OFFSET>,
            GetNumberExpressionSyntaxes: GetNumberExpressionSyntaxes::<Identity, OFFSET>,
            GetExpressionSyntaxNames: GetExpressionSyntaxNames::<Identity, OFFSET>,
            GetNumberEvents: GetNumberEvents::<Identity, OFFSET>,
            GetEventIndexDescription: GetEventIndexDescription::<Identity, OFFSET>,
            GetCurrentEventIndex: GetCurrentEventIndex::<Identity, OFFSET>,
            SetNextEventIndex: SetNextEventIndex::<Identity, OFFSET>,
            GetLogFileWide: GetLogFileWide::<Identity, OFFSET>,
            OpenLogFileWide: OpenLogFileWide::<Identity, OFFSET>,
            InputWide: InputWide::<Identity, OFFSET>,
            ReturnInputWide: ReturnInputWide::<Identity, OFFSET>,
            OutputWide: OutputWide::<Identity, OFFSET>,
            OutputVaListWide: OutputVaListWide::<Identity, OFFSET>,
            ControlledOutputWide: ControlledOutputWide::<Identity, OFFSET>,
            ControlledOutputVaListWide: ControlledOutputVaListWide::<Identity, OFFSET>,
            OutputPromptWide: OutputPromptWide::<Identity, OFFSET>,
            OutputPromptVaListWide: OutputPromptVaListWide::<Identity, OFFSET>,
            GetPromptTextWide: GetPromptTextWide::<Identity, OFFSET>,
            AssembleWide: AssembleWide::<Identity, OFFSET>,
            DisassembleWide: DisassembleWide::<Identity, OFFSET>,
            GetProcessorTypeNamesWide: GetProcessorTypeNamesWide::<Identity, OFFSET>,
            GetTextMacroWide: GetTextMacroWide::<Identity, OFFSET>,
            SetTextMacroWide: SetTextMacroWide::<Identity, OFFSET>,
            EvaluateWide: EvaluateWide::<Identity, OFFSET>,
            ExecuteWide: ExecuteWide::<Identity, OFFSET>,
            ExecuteCommandFileWide: ExecuteCommandFileWide::<Identity, OFFSET>,
            GetBreakpointByIndex2: GetBreakpointByIndex2::<Identity, OFFSET>,
            GetBreakpointById2: GetBreakpointById2::<Identity, OFFSET>,
            AddBreakpoint2: AddBreakpoint2::<Identity, OFFSET>,
            RemoveBreakpoint2: RemoveBreakpoint2::<Identity, OFFSET>,
            AddExtensionWide: AddExtensionWide::<Identity, OFFSET>,
            GetExtensionByPathWide: GetExtensionByPathWide::<Identity, OFFSET>,
            CallExtensionWide: CallExtensionWide::<Identity, OFFSET>,
            GetExtensionFunctionWide: GetExtensionFunctionWide::<Identity, OFFSET>,
            GetEventFilterTextWide: GetEventFilterTextWide::<Identity, OFFSET>,
            GetEventFilterCommandWide: GetEventFilterCommandWide::<Identity, OFFSET>,
            SetEventFilterCommandWide: SetEventFilterCommandWide::<Identity, OFFSET>,
            GetSpecificFilterArgumentWide: GetSpecificFilterArgumentWide::<Identity, OFFSET>,
            SetSpecificFilterArgumentWide: SetSpecificFilterArgumentWide::<Identity, OFFSET>,
            GetExceptionFilterSecondCommandWide: GetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            SetExceptionFilterSecondCommandWide: SetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            GetLastEventInformationWide: GetLastEventInformationWide::<Identity, OFFSET>,
            GetTextReplacementWide: GetTextReplacementWide::<Identity, OFFSET>,
            SetTextReplacementWide: SetTextReplacementWide::<Identity, OFFSET>,
            SetExpressionSyntaxByNameWide: SetExpressionSyntaxByNameWide::<Identity, OFFSET>,
            GetExpressionSyntaxNamesWide: GetExpressionSyntaxNamesWide::<Identity, OFFSET>,
            GetEventIndexDescriptionWide: GetEventIndexDescriptionWide::<Identity, OFFSET>,
            GetLogFile2: GetLogFile2::<Identity, OFFSET>,
            OpenLogFile2: OpenLogFile2::<Identity, OFFSET>,
            GetLogFile2Wide: GetLogFile2Wide::<Identity, OFFSET>,
            OpenLogFile2Wide: OpenLogFile2Wide::<Identity, OFFSET>,
            GetSystemVersionValues: GetSystemVersionValues::<Identity, OFFSET>,
            GetSystemVersionString: GetSystemVersionString::<Identity, OFFSET>,
            GetSystemVersionStringWide: GetSystemVersionStringWide::<Identity, OFFSET>,
            GetContextStackTrace: GetContextStackTrace::<Identity, OFFSET>,
            OutputContextStackTrace: OutputContextStackTrace::<Identity, OFFSET>,
            GetStoredEventInformation: GetStoredEventInformation::<Identity, OFFSET>,
            GetManagedStatus: GetManagedStatus::<Identity, OFFSET>,
            GetManagedStatusWide: GetManagedStatusWide::<Identity, OFFSET>,
            ResetManagedStatus: ResetManagedStatus::<Identity, OFFSET>,
            GetStackTraceEx: GetStackTraceEx::<Identity, OFFSET>,
            OutputStackTraceEx: OutputStackTraceEx::<Identity, OFFSET>,
            GetContextStackTraceEx: GetContextStackTraceEx::<Identity, OFFSET>,
            OutputContextStackTraceEx: OutputContextStackTraceEx::<Identity, OFFSET>,
            GetBreakpointByGuid: GetBreakpointByGuid::<Identity, OFFSET>,
            GetExecutionStatusEx: GetExecutionStatusEx::<Identity, OFFSET>,
            GetSynchronizationStatus: GetSynchronizationStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl6 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl6 {}
windows_core::imp::define_interface!(IDebugControl7, IDebugControl7_Vtbl, 0xb86fb3b1_80d4_475b_aea3_cf06539cf63a);
windows_core::imp::interface_hierarchy!(IDebugControl7, windows_core::IUnknown);
impl IDebugControl7 {
    pub unsafe fn GetInterrupt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetInterrupt)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterrupt)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetInterruptTimeout(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterruptTimeout)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetInterruptTimeout)(windows_core::Interface::as_raw(self), seconds).ok() }
    }
    pub unsafe fn GetLogFile(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFile<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn CloseLogFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseLogFile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetLogMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLogMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLogMask(&self, mask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLogMask)(windows_core::Interface::as_raw(self), mask).ok() }
    }
    pub unsafe fn Input(&self, buffer: &mut [u8], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Input)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInput<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInput)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn Output<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaList<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaList)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutput<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutput)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaList<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaList)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPrompt<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPrompt)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaList<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaList)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptText(&self, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputVersionInformation)(windows_core::Interface::as_raw(self), outputcontrol).ok() }
    }
    pub unsafe fn GetNotifyEventHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNotifyEventHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNotifyEventHandle)(windows_core::Interface::as_raw(self), handle).ok() }
    }
    pub unsafe fn Assemble<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Assemble)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Disassemble(&self, offset: u64, flags: u32, buffer: Option<&mut [u8]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisassembleEffectiveOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OutputDisassembly)(windows_core::Interface::as_raw(self), outputcontrol, offset, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, offset: u64, flags: u32, offsetline: Option<*mut u32>, startoffset: Option<*mut u64>, endoffset: Option<*mut u64>, lineoffsets: Option<&mut [u64]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputDisassemblyLines)(windows_core::Interface::as_raw(self), outputcontrol, previouslines, lineoffsets.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), offset, flags, offsetline.unwrap_or(core::mem::zeroed()) as _, startoffset.unwrap_or(core::mem::zeroed()) as _, endoffset.unwrap_or(core::mem::zeroed()) as _, 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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNearInstruction)(windows_core::Interface::as_raw(self), offset, delta, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTrace)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReturnOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetReturnOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OutputStackTrace(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType)(windows_core::Interface::as_raw(self), class as _, qualifier as _).ok() }
    }
    pub unsafe fn GetActualProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetActualProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExecutingProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutingProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPossibleExecutingProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPossibleExecutingProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetNumberProcessors(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcessors)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemVersion(&self, platformid: *mut u32, major: *mut u32, minor: *mut u32, servicepackstring: Option<&mut [u8]>, servicepackstringused: Option<*mut u32>, servicepacknumber: *mut u32, buildstring: Option<&mut [u8]>, buildstringused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (windows_core::Interface::vtable(self).GetSystemVersion)(
                windows_core::Interface::as_raw(self),
                platformid as _,
                major as _,
                minor as _,
                core::mem::transmute(servicepackstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                servicepackstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                servicepackstringused.unwrap_or(core::mem::zeroed()) as _,
                servicepacknumber as _,
                core::mem::transmute(buildstring.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                buildstring.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                buildstringused.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetPageSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPageSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsPointer64Bit(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBugCheckData)(windows_core::Interface::as_raw(self), code as _, arg1 as _, arg2 as _, arg3 as _, arg4 as _).ok() }
    }
    pub unsafe fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSupportedProcessorTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSupportedProcessorTypes(&self, start: u32, types: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSupportedProcessorTypes)(windows_core::Interface::as_raw(self), start, types.len().try_into().unwrap(), core::mem::transmute(types.as_ptr())).ok() }
    }
    pub unsafe fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEffectiveProcessorType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEffectiveProcessorType)(windows_core::Interface::as_raw(self), r#type).ok() }
    }
    pub unsafe fn GetExecutionStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExecutionStatus)(windows_core::Interface::as_raw(self), status).ok() }
    }
    pub unsafe fn GetCodeLevel(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodeLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodeLevel)(windows_core::Interface::as_raw(self), level).ok() }
    }
    pub unsafe fn GetEngineOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEngineOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEngineOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel as _, breaklevel as _).ok() }
    }
    pub unsafe fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSystemErrorControl)(windows_core::Interface::as_raw(self), outputlevel, breaklevel).ok() }
    }
    pub unsafe fn GetTextMacro(&self, slot: u32, buffer: Option<&mut [u8]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacro<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacro)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn GetRadix(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRadix)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRadix(&self, radix: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRadix)(windows_core::Interface::as_raw(self), radix).ok() }
    }
    pub unsafe fn Evaluate<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Evaluate)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValue)(windows_core::Interface::as_raw(self), r#in, outtype, out as _).ok() }
    }
    pub unsafe fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CoerceValues)(windows_core::Interface::as_raw(self), count, r#in, outtypes, out as _).ok() }
    }
    pub unsafe fn Execute<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFile<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFile)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetNumberBreakpoints(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberBreakpoints)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointParameters(&self, count: u32, ids: Option<*const u32>, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBreakpointParameters)(windows_core::Interface::as_raw(self), count, ids.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtension<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtension)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtension<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtension)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunction<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunction)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis32)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    #[cfg(feature = "Win32_System_Kernel")]
    pub unsafe fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWindbgExtensionApis64)(windows_core::Interface::as_raw(self), api as _).ok() }
    }
    pub unsafe fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberEventFilters)(windows_core::Interface::as_raw(self), specificevents as _, specificexceptions as _, arbitraryexceptions as _).ok() }
    }
    pub unsafe fn GetEventFilterText(&self, index: u32, buffer: Option<&mut [u8]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterParameters(&self, start: u32, params: &mut [DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn SetSpecificFilterParameters(&self, start: u32, params: &[DEBUG_SPECIFIC_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetSpecificFilterArgument(&self, index: u32, buffer: Option<&mut [u8]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgument<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgument)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterParameters(&self, count: u32, codes: Option<*const u32>, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExceptionFilterParameters)(windows_core::Interface::as_raw(self), count, codes.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn SetExceptionFilterParameters(&self, params: &[DEBUG_EXCEPTION_FILTER_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterParameters)(windows_core::Interface::as_raw(self), params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: Option<&mut [u8]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommand<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommand)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u8]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentTimeDate(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentTimeDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDumpFormatFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDumpFormatFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberTextReplacements(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberTextReplacements)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTextReplacement<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u8]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u8]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacement)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacement<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacement)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn RemoveTextReplacements(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTextReplacements)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetAssemblyOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAssemblyOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssemblyOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetExpressionSyntax(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExpressionSyntax)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByName)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberExpressionSyntaxes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: Option<&mut [u8]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u8]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetNumberEvents(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberEvents)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventIndexDescription<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescription)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentEventIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentEventIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetNextEventIndex)(windows_core::Interface::as_raw(self), relation, value, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLogFileWide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, append: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, append as _).ok() }
    }
    pub unsafe fn OpenLogFileWide<P0>(&self, file: P0, append: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFileWide)(windows_core::Interface::as_raw(self), file.param().abi(), append.into()).ok() }
    }
    pub unsafe fn InputWide(&self, buffer: &mut [u16], inputsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InputWide)(windows_core::Interface::as_raw(self), core::mem::transmute(buffer.as_ptr()), buffer.len().try_into().unwrap(), inputsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReturnInputWide<P0>(&self, buffer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReturnInputWide)(windows_core::Interface::as_raw(self), buffer.param().abi()).ok() }
    }
    pub unsafe fn OutputWide<P1>(&self, mask: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputWide)(windows_core::Interface::as_raw(self), mask, format.param().abi()).ok() }
    }
    pub unsafe fn OutputVaListWide<P1>(&self, mask: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputVaListWide)(windows_core::Interface::as_raw(self), mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn ControlledOutputWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi()).ok() }
    }
    pub unsafe fn ControlledOutputVaListWide<P2>(&self, outputcontrol: u32, mask: u32, format: P2, args: *const i8) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ControlledOutputVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, mask, format.param().abi(), args).ok() }
    }
    pub unsafe fn OutputPromptWide<P1>(&self, outputcontrol: u32, format: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi()).ok() }
    }
    pub unsafe fn OutputPromptVaListWide<P1>(&self, outputcontrol: u32, format: P1, args: *const i8) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputPromptVaListWide)(windows_core::Interface::as_raw(self), outputcontrol, format.param().abi(), args).ok() }
    }
    pub unsafe fn GetPromptTextWide(&self, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AssembleWide<P1>(&self, offset: u64, instr: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AssembleWide)(windows_core::Interface::as_raw(self), offset, instr.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisassembleWide(&self, offset: u64, flags: u32, buffer: Option<&mut [u16]>, disassemblysize: Option<*mut u32>, endoffset: *mut u64) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), disassemblysize.unwrap_or(core::mem::zeroed()) as _, endoffset as _).ok() }
    }
    pub unsafe fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetTextMacroWide(&self, slot: u32, buffer: Option<&mut [u16]>, macrosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), macrosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetTextMacroWide<P1>(&self, slot: u32, r#macro: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextMacroWide)(windows_core::Interface::as_raw(self), slot, r#macro.param().abi()).ok() }
    }
    pub unsafe fn EvaluateWide<P0>(&self, expression: P0, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateWide)(windows_core::Interface::as_raw(self), expression.param().abi(), desiredtype, value as _, remainderindex.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ExecuteWide<P1>(&self, outputcontrol: u32, command: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteWide)(windows_core::Interface::as_raw(self), outputcontrol, command.param().abi(), flags).ok() }
    }
    pub unsafe fn ExecuteCommandFileWide<P1>(&self, outputcontrol: u32, commandfile: P1, flags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ExecuteCommandFileWide)(windows_core::Interface::as_raw(self), outputcontrol, commandfile.param().abi(), flags).ok() }
    }
    pub unsafe fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByIndex2)(windows_core::Interface::as_raw(self), index, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointById2)(windows_core::Interface::as_raw(self), id, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddBreakpoint2)(windows_core::Interface::as_raw(self), r#type, desiredid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveBreakpoint2<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveBreakpoint2)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn AddExtensionWide<P0>(&self, path: P0, flags: u32) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddExtensionWide)(windows_core::Interface::as_raw(self), path.param().abi(), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetExtensionByPathWide<P0>(&self, path: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionByPathWide)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CallExtensionWide<P1, P2>(&self, handle: u64, function: P1, arguments: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallExtensionWide)(windows_core::Interface::as_raw(self), handle, function.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn GetExtensionFunctionWide<P1>(&self, handle: u64, funcname: P1) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExtensionFunctionWide)(windows_core::Interface::as_raw(self), handle, funcname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventFilterTextWide(&self, index: u32, buffer: Option<&mut [u16]>, textsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), textsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEventFilterCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetEventFilterCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEventFilterCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: Option<&mut [u16]>, argumentsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), argumentsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSpecificFilterArgumentWide<P1>(&self, index: u32, argument: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSpecificFilterArgumentWide)(windows_core::Interface::as_raw(self), index, argument.param().abi()).ok() }
    }
    pub unsafe fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: Option<&mut [u16]>, commandsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), commandsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetExceptionFilterSecondCommandWide<P1>(&self, index: u32, command: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExceptionFilterSecondCommandWide)(windows_core::Interface::as_raw(self), index, command.param().abi()).ok() }
    }
    pub unsafe fn GetLastEventInformationWide(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>, description: Option<&mut [u16]>, descriptionused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLastEventInformationWide)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(description.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), description.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), descriptionused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTextReplacementWide<P0>(&self, srctext: P0, index: u32, srcbuffer: Option<&mut [u16]>, srcsize: Option<*mut u32>, dstbuffer: Option<&mut [u16]>, dstsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            (windows_core::Interface::vtable(self).GetTextReplacementWide)(
                windows_core::Interface::as_raw(self),
                srctext.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().try_into().unwrap()),
                srcsize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(dstbuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                dstbuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                dstsize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn SetTextReplacementWide<P0, P1>(&self, srctext: P0, dsttext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTextReplacementWide)(windows_core::Interface::as_raw(self), srctext.param().abi(), dsttext.param().abi()).ok() }
    }
    pub unsafe fn SetExpressionSyntaxByNameWide<P0>(&self, abbrevname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExpressionSyntaxByNameWide)(windows_core::Interface::as_raw(self), abbrevname.param().abi()).ok() }
    }
    pub unsafe fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: Option<&mut [u16]>, fullnamesize: Option<*mut u32>, abbrevnamebuffer: Option<&mut [u16]>, abbrevnamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                fullnamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(abbrevnamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                abbrevnamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                abbrevnamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetEventIndexDescriptionWide<P2>(&self, index: u32, which: u32, buffer: P2, buffersize: u32, descsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEventIndexDescriptionWide)(windows_core::Interface::as_raw(self), index, which, buffer.param().abi(), buffersize, descsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLogFile2(&self, buffer: Option<&mut [u8]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetLogFile2Wide(&self, buffer: Option<&mut [u16]>, filesize: Option<*mut u32>, flags: *mut u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, flags as _).ok() }
    }
    pub unsafe fn OpenLogFile2Wide<P0>(&self, file: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenLogFile2Wide)(windows_core::Interface::as_raw(self), file.param().abi(), flags).ok() }
    }
    pub unsafe fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: Option<*mut u32>, kdminor: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemVersionValues)(windows_core::Interface::as_raw(self), platformid as _, win32major as _, win32minor as _, kdmajor.unwrap_or(core::mem::zeroed()) as _, kdminor.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionString(&self, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSystemVersionStringWide(&self, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetContextStackTrace(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTrace)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTrace)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetStoredEventInformation(&self, r#type: *mut u32, processid: *mut u32, threadid: *mut u32, context: Option<*mut core::ffi::c_void>, contextsize: u32, contextused: Option<*mut u32>, extrainformation: Option<*mut core::ffi::c_void>, extrainformationsize: u32, extrainformationused: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStoredEventInformation)(windows_core::Interface::as_raw(self), r#type as _, processid as _, threadid as _, context.unwrap_or(core::mem::zeroed()) as _, contextsize, contextused.unwrap_or(core::mem::zeroed()) as _, extrainformation.unwrap_or(core::mem::zeroed()) as _, extrainformationsize, extrainformationused.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatus(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u8]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatus)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetManagedStatusWide(&self, flags: Option<*mut u32>, whichstring: u32, string: Option<&mut [u16]>, stringneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetManagedStatusWide)(windows_core::Interface::as_raw(self), flags.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), stringneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetManagedStatus)(windows_core::Interface::as_raw(self), flags).ok() }
    }
    pub unsafe fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: &mut [DEBUG_STACK_FRAME_EX], framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStackTraceEx)(windows_core::Interface::as_raw(self), frameoffset, stackoffset, instructionoffset, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputStackTraceEx(&self, outputcontrol: u32, frames: Option<&[DEBUG_STACK_FRAME_EX]>, flags: u32) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), flags).ok() }
    }
    pub unsafe fn GetContextStackTraceEx(&self, startcontext: Option<*const core::ffi::c_void>, startcontextsize: u32, frames: Option<&mut [DEBUG_STACK_FRAME_EX]>, framecontexts: Option<*mut core::ffi::c_void>, framecontextssize: u32, framecontextsentrysize: u32, framesfilled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetContextStackTraceEx)(windows_core::Interface::as_raw(self), startcontext.unwrap_or(core::mem::zeroed()) as _, 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().try_into().unwrap()), framecontexts.unwrap_or(core::mem::zeroed()) as _, framecontextssize, framecontextsentrysize, framesfilled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    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<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputContextStackTraceEx)(windows_core::Interface::as_raw(self), outputcontrol, core::mem::transmute(frames.as_ptr()), frames.len().try_into().unwrap(), framecontexts, framecontextssize, framecontextsentrysize, flags).ok() }
    }
    pub unsafe fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBreakpointByGuid)(windows_core::Interface::as_raw(self), guid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetExecutionStatusEx(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExecutionStatusEx)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSynchronizationStatus)(windows_core::Interface::as_raw(self), sendsattempted as _, secondssincelastresponse as _).ok() }
    }
    pub unsafe fn GetDebuggeeType2(&self, flags: u32, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDebuggeeType2)(windows_core::Interface::as_raw(self), flags, class as _, qualifier as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugControl7_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetInterruptTimeout: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseLogFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetLogMask: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Input: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInput: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPrompt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputPromptVaList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputCurrentState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OutputVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetNotifyEventHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Assemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub Disassemble: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetDisassembleEffectiveOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassembly: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u32, *mut u64) -> windows_core::HRESULT,
    pub OutputDisassemblyLines: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, u32, *mut u32, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNearInstruction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, *mut u64) -> windows_core::HRESULT,
    pub GetStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME, u32, *mut u32) -> windows_core::HRESULT,
    pub GetReturnOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub OutputStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, u32) -> windows_core::HRESULT,
    pub GetDebuggeeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetActualProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExecutingProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPossibleExecutingProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcessors: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetPageSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsPointer64Bit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadBugCheckData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u64, *mut u64, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub GetNumberSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSupportedProcessorTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetProcessorTypeNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetEffectiveProcessorType: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExecutionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodeLevel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetEngineOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetSystemErrorControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacro: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRadix: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Evaluate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub CoerceValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_VALUE, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub CoerceValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE, *const u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetNumberBreakpoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT,
    pub AddBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub RemoveExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetExtensionByPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtension: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExtensionFunction: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Kernel")]
    pub GetWindbgExtensionApis32: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Kernel"))]
    GetWindbgExtensionApis64: usize,
    pub GetNumberEventFilters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetSpecificFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgument: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub SetExceptionFilterParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub WaitForEvent: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetLastEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentTimeDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDumpFormatFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetNumberTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacement: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputTextReplacements: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetAssemblyOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetExpressionSyntax: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetNumberExpressionSyntaxes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNumberEvents: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetNextEventIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub OpenLogFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub InputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReturnInputWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub ControlledOutputWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ControlledOutputVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub OutputPromptWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputPromptVaListWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const i8) -> windows_core::HRESULT,
    pub GetPromptTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub AssembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub DisassembleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetProcessorTypeNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextMacroWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EvaluateWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_VALUE, *mut u32) -> windows_core::HRESULT,
    pub ExecuteWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub ExecuteCommandFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetBreakpointByIndex2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBreakpointById2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveBreakpoint2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u64) -> windows_core::HRESULT,
    pub GetExtensionByPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub CallExtensionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExtensionFunctionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT,
    pub GetEventFilterTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEventFilterCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSpecificFilterArgumentWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetExceptionFilterSecondCommandWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetLastEventInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetTextReplacementWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetExpressionSyntaxByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetExpressionSyntaxNamesWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetEventIndexDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub OpenLogFile2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetSystemVersionValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSystemVersionStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTrace: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetStoredEventInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetManagedStatusWide: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ResetManagedStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *mut DEBUG_STACK_FRAME_EX, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, u32) -> windows_core::HRESULT,
    pub GetContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut DEBUG_STACK_FRAME_EX, u32, *mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputContextStackTraceEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_STACK_FRAME_EX, u32, *const core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetBreakpointByGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetExecutionStatusEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSynchronizationStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetDebuggeeType2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Kernel")]
pub trait IDebugControl7_Impl: windows_core::IUnknownImpl {
    fn GetInterrupt(&self) -> windows_core::Result<()>;
    fn SetInterrupt(&self, flags: u32) -> windows_core::Result<()>;
    fn GetInterruptTimeout(&self) -> windows_core::Result<u32>;
    fn SetInterruptTimeout(&self, seconds: u32) -> windows_core::Result<()>;
    fn GetLogFile(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFile(&self, file: &windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseLogFile(&self) -> windows_core::Result<()>;
    fn GetLogMask(&self) -> windows_core::Result<u32>;
    fn SetLogMask(&self, mask: u32) -> windows_core::Result<()>;
    fn Input(&self, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInput(&self, buffer: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn Output(&self, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputVaList(&self, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutput(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaList(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPrompt(&self, outputcontrol: u32, format: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputPromptVaList(&self, outputcontrol: u32, format: &windows_core::PCSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptText(&self, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn OutputCurrentState(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn OutputVersionInformation(&self, outputcontrol: u32) -> windows_core::Result<()>;
    fn GetNotifyEventHandle(&self) -> windows_core::Result<u64>;
    fn SetNotifyEventHandle(&self, handle: u64) -> windows_core::Result<()>;
    fn Assemble(&self, offset: u64, instr: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn Disassemble(&self, offset: u64, flags: u32, buffer: windows_core::PSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetDisassembleEffectiveOffset(&self) -> windows_core::Result<u64>;
    fn OutputDisassembly(&self, outputcontrol: u32, offset: u64, flags: u32) -> windows_core::Result<u64>;
    fn OutputDisassemblyLines(&self, outputcontrol: u32, previouslines: u32, totallines: u32, offset: u64, flags: u32, offsetline: *mut u32, startoffset: *mut u64, endoffset: *mut u64, lineoffsets: *mut u64) -> windows_core::Result<()>;
    fn GetNearInstruction(&self, offset: u64, delta: i32) -> windows_core::Result<u64>;
    fn GetStackTrace(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn GetReturnOffset(&self) -> windows_core::Result<u64>;
    fn OutputStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetDebuggeeType(&self, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
    fn GetActualProcessorType(&self) -> windows_core::Result<u32>;
    fn GetExecutingProcessorType(&self) -> windows_core::Result<u32>;
    fn GetNumberPossibleExecutingProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetPossibleExecutingProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetNumberProcessors(&self) -> windows_core::Result<u32>;
    fn GetSystemVersion(&self, 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::Result<()>;
    fn GetPageSize(&self) -> windows_core::Result<u32>;
    fn IsPointer64Bit(&self) -> windows_core::Result<()>;
    fn ReadBugCheckData(&self, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::Result<()>;
    fn GetNumberSupportedProcessorTypes(&self) -> windows_core::Result<u32>;
    fn GetSupportedProcessorTypes(&self, start: u32, count: u32, types: *mut u32) -> windows_core::Result<()>;
    fn GetProcessorTypeNames(&self, r#type: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEffectiveProcessorType(&self) -> windows_core::Result<u32>;
    fn SetEffectiveProcessorType(&self, r#type: u32) -> windows_core::Result<()>;
    fn GetExecutionStatus(&self) -> windows_core::Result<u32>;
    fn SetExecutionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn GetCodeLevel(&self) -> windows_core::Result<u32>;
    fn SetCodeLevel(&self, level: u32) -> windows_core::Result<()>;
    fn GetEngineOptions(&self) -> windows_core::Result<u32>;
    fn AddEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetEngineOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetSystemErrorControl(&self, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::Result<()>;
    fn SetSystemErrorControl(&self, outputlevel: u32, breaklevel: u32) -> windows_core::Result<()>;
    fn GetTextMacro(&self, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacro(&self, slot: u32, r#macro: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetRadix(&self) -> windows_core::Result<u32>;
    fn SetRadix(&self, radix: u32) -> windows_core::Result<()>;
    fn Evaluate(&self, expression: &windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn CoerceValue(&self, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn CoerceValues(&self, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn Execute(&self, outputcontrol: u32, command: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFile(&self, outputcontrol: u32, commandfile: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetNumberBreakpoints(&self) -> windows_core::Result<u32>;
    fn GetBreakpointByIndex(&self, index: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointById(&self, id: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn GetBreakpointParameters(&self, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::Result<()>;
    fn AddBreakpoint(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint>;
    fn RemoveBreakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn AddExtension(&self, path: &windows_core::PCSTR, flags: u32) -> windows_core::Result<u64>;
    fn RemoveExtension(&self, handle: u64) -> windows_core::Result<()>;
    fn GetExtensionByPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn CallExtension(&self, handle: u64, function: &windows_core::PCSTR, arguments: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExtensionFunction(&self, handle: u64, funcname: &windows_core::PCSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetWindbgExtensionApis32(&self, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::Result<()>;
    fn GetWindbgExtensionApis64(&self, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::Result<()>;
    fn GetNumberEventFilters(&self, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterParameters(&self, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetSpecificFilterParameters(&self, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetSpecificFilterArgument(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgument(&self, index: u32, argument: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterParameters(&self, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn SetExceptionFilterParameters(&self, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommand(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommand(&self, index: u32, command: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn WaitForEvent(&self, flags: u32, timeout: u32) -> windows_core::Result<()>;
    fn GetLastEventInformation(&self, 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::Result<()>;
    fn GetCurrentTimeDate(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemUpTime(&self) -> windows_core::Result<u32>;
    fn GetDumpFormatFlags(&self) -> windows_core::Result<u32>;
    fn GetNumberTextReplacements(&self) -> windows_core::Result<u32>;
    fn GetTextReplacement(&self, 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::Result<()>;
    fn SetTextReplacement(&self, srctext: &windows_core::PCSTR, dsttext: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveTextReplacements(&self) -> windows_core::Result<()>;
    fn OutputTextReplacements(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetAssemblyOptions(&self) -> windows_core::Result<u32>;
    fn AddAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetAssemblyOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetExpressionSyntax(&self) -> windows_core::Result<u32>;
    fn SetExpressionSyntax(&self, flags: u32) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByName(&self, abbrevname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetNumberExpressionSyntaxes(&self) -> windows_core::Result<u32>;
    fn GetExpressionSyntaxNames(&self, index: u32, fullnamebuffer: windows_core::PSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetNumberEvents(&self) -> windows_core::Result<u32>;
    fn GetEventIndexDescription(&self, index: u32, which: u32, buffer: &windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentEventIndex(&self) -> windows_core::Result<u32>;
    fn SetNextEventIndex(&self, relation: u32, value: u32) -> windows_core::Result<u32>;
    fn GetLogFileWide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn OpenLogFileWide(&self, file: &windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::Result<()>;
    fn InputWide(&self, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::Result<()>;
    fn ReturnInputWide(&self, buffer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputWide(&self, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputVaListWide(&self, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn ControlledOutputWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ControlledOutputVaListWide(&self, outputcontrol: u32, mask: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn OutputPromptWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputPromptVaListWide(&self, outputcontrol: u32, format: &windows_core::PCWSTR, args: *const i8) -> windows_core::Result<()>;
    fn GetPromptTextWide(&self, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn AssembleWide(&self, offset: u64, instr: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn DisassembleWide(&self, offset: u64, flags: u32, buffer: windows_core::PWSTR, buffersize: u32, disassemblysize: *mut u32, endoffset: *mut u64) -> windows_core::Result<()>;
    fn GetProcessorTypeNamesWide(&self, r#type: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetTextMacroWide(&self, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::Result<()>;
    fn SetTextMacroWide(&self, slot: u32, r#macro: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EvaluateWide(&self, expression: &windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::Result<()>;
    fn ExecuteWide(&self, outputcontrol: u32, command: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn ExecuteCommandFileWide(&self, outputcontrol: u32, commandfile: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByIndex2(&self, index: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn GetBreakpointById2(&self, id: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn AddBreakpoint2(&self, r#type: u32, desiredid: u32) -> windows_core::Result<IDebugBreakpoint2>;
    fn RemoveBreakpoint2(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>) -> windows_core::Result<()>;
    fn AddExtensionWide(&self, path: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<u64>;
    fn GetExtensionByPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn CallExtensionWide(&self, handle: u64, function: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExtensionFunctionWide(&self, handle: u64, funcname: &windows_core::PCWSTR) -> windows_core::Result<super::super::super::super::Foundation::FARPROC>;
    fn GetEventFilterTextWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::Result<()>;
    fn GetEventFilterCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetEventFilterCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSpecificFilterArgumentWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::Result<()>;
    fn SetSpecificFilterArgumentWide(&self, index: u32, argument: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExceptionFilterSecondCommandWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::Result<()>;
    fn SetExceptionFilterSecondCommandWide(&self, index: u32, command: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetLastEventInformationWide(&self, 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::Result<()>;
    fn GetTextReplacementWide(&self, 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::Result<()>;
    fn SetTextReplacementWide(&self, srctext: &windows_core::PCWSTR, dsttext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExpressionSyntaxByNameWide(&self, abbrevname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetExpressionSyntaxNamesWide(&self, index: u32, fullnamebuffer: windows_core::PWSTR, fullnamebuffersize: u32, fullnamesize: *mut u32, abbrevnamebuffer: windows_core::PWSTR, abbrevnamebuffersize: u32, abbrevnamesize: *mut u32) -> windows_core::Result<()>;
    fn GetEventIndexDescriptionWide(&self, index: u32, which: u32, buffer: &windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::Result<()>;
    fn GetLogFile2(&self, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2(&self, file: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetLogFile2Wide(&self, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn OpenLogFile2Wide(&self, file: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn GetSystemVersionValues(&self, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionString(&self, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSystemVersionStringWide(&self, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetContextStackTrace(&self, 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::Result<()>;
    fn OutputContextStackTrace(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetStoredEventInformation(&self, 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::Result<()>;
    fn GetManagedStatus(&self, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn GetManagedStatusWide(&self, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::Result<()>;
    fn ResetManagedStatus(&self, flags: u32) -> windows_core::Result<()>;
    fn GetStackTraceEx(&self, frameoffset: u64, stackoffset: u64, instructionoffset: u64, frames: *mut DEBUG_STACK_FRAME_EX, framessize: u32, framesfilled: *mut u32) -> windows_core::Result<()>;
    fn OutputStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetContextStackTraceEx(&self, 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::Result<()>;
    fn OutputContextStackTraceEx(&self, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, framecontexts: *const core::ffi::c_void, framecontextssize: u32, framecontextsentrysize: u32, flags: u32) -> windows_core::Result<()>;
    fn GetBreakpointByGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<IDebugBreakpoint3>;
    fn GetExecutionStatusEx(&self) -> windows_core::Result<u32>;
    fn GetSynchronizationStatus(&self, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::Result<()>;
    fn GetDebuggeeType2(&self, flags: u32, class: *mut u32, qualifier: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Kernel")]
impl IDebugControl7_Vtbl {
    pub const fn new<Identity: IDebugControl7_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterrupt<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetInterrupt(this).into()
            }
        }
        unsafe extern "system" fn SetInterrupt<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetInterrupt(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInterruptTimeout<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetInterruptTimeout(this) {
                    Ok(ok__) => {
                        seconds.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetInterruptTimeout<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, seconds: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetInterruptTimeout(this, core::mem::transmute_copy(&seconds)).into()
            }
        }
        unsafe extern "system" fn GetLogFile<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLogFile(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OpenLogFile(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn CloseLogFile<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::CloseLogFile(this).into()
            }
        }
        unsafe extern "system" fn GetLogMask<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetLogMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLogMask<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetLogMask(this, core::mem::transmute_copy(&mask)).into()
            }
        }
        unsafe extern "system" fn Input<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::Input(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInput<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ReturnInput(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn Output<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaList<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputVaList(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutput<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ControlledOutput(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaList<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ControlledOutputVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPrompt<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputPrompt(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaList<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputPromptVaList(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptText<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetPromptText(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn OutputCurrentState<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputCurrentState(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OutputVersionInformation<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputVersionInformation(this, core::mem::transmute_copy(&outputcontrol)).into()
            }
        }
        unsafe extern "system" fn GetNotifyEventHandle<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNotifyEventHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNotifyEventHandle<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetNotifyEventHandle(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Assemble<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::Assemble(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Disassemble<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::Disassemble(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetDisassembleEffectiveOffset<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetDisassembleEffectiveOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassembly<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, flags: u32, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::OutputDisassembly(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputDisassemblyLines<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputDisassemblyLines(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&previouslines), core::mem::transmute_copy(&totallines), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offsetline), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&endoffset), core::mem::transmute_copy(&lineoffsets)).into()
            }
        }
        unsafe extern "system" fn GetNearInstruction<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, delta: i32, nearoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNearInstruction(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta)) {
                    Ok(ok__) => {
                        nearoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackTrace<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetStackTrace(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn GetReturnOffset<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetReturnOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OutputStackTrace<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetDebuggeeType(this, core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        unsafe extern "system" fn GetActualProcessorType<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetActualProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutingProcessorType<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExecutingProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPossibleExecutingProcessorTypes<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberPossibleExecutingProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPossibleExecutingProcessorTypes<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetPossibleExecutingProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetNumberProcessors<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberProcessors(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemVersion<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSystemVersion(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&major), core::mem::transmute_copy(&minor), core::mem::transmute_copy(&servicepackstring), core::mem::transmute_copy(&servicepackstringsize), core::mem::transmute_copy(&servicepackstringused), core::mem::transmute_copy(&servicepacknumber), core::mem::transmute_copy(&buildstring), core::mem::transmute_copy(&buildstringsize), core::mem::transmute_copy(&buildstringused)).into()
            }
        }
        unsafe extern "system" fn GetPageSize<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetPageSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsPointer64Bit<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::IsPointer64Bit(this).into()
            }
        }
        unsafe extern "system" fn ReadBugCheckData<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, code: *mut u32, arg1: *mut u64, arg2: *mut u64, arg3: *mut u64, arg4: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ReadBugCheckData(this, core::mem::transmute_copy(&code), core::mem::transmute_copy(&arg1), core::mem::transmute_copy(&arg2), core::mem::transmute_copy(&arg3), core::mem::transmute_copy(&arg4)).into()
            }
        }
        unsafe extern "system" fn GetNumberSupportedProcessorTypes<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberSupportedProcessorTypes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSupportedProcessorTypes<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, types: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSupportedProcessorTypes(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&types)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNames<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetProcessorTypeNames(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEffectiveProcessorType<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetEffectiveProcessorType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEffectiveProcessorType<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetEffectiveProcessorType(this, core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetExecutionStatus<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExecutionStatus(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExecutionStatus<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExecutionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn GetCodeLevel<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetCodeLevel(this) {
                    Ok(ok__) => {
                        level.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodeLevel<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetCodeLevel(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn GetEngineOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetEngineOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddEngineOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::AddEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveEngineOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetEngineOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetEngineOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetSystemErrorControl<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: *mut u32, breaklevel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn SetSystemErrorControl<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputlevel: u32, breaklevel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetSystemErrorControl(this, core::mem::transmute_copy(&outputlevel), core::mem::transmute_copy(&breaklevel)).into()
            }
        }
        unsafe extern "system" fn GetTextMacro<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacro<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetTextMacro(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn GetRadix<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetRadix(this) {
                    Ok(ok__) => {
                        radix.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRadix<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, radix: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetRadix(this, core::mem::transmute_copy(&radix)).into()
            }
        }
        unsafe extern "system" fn Evaluate<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::Evaluate(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn CoerceValue<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#in: *const DEBUG_VALUE, outtype: u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::CoerceValue(this, core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtype), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn CoerceValues<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, r#in: *const DEBUG_VALUE, outtypes: *const u32, out: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::CoerceValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&r#in), core::mem::transmute_copy(&outtypes), core::mem::transmute_copy(&out)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::Execute(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFile<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ExecuteCommandFile(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetNumberBreakpoints<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberBreakpoints(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetBreakpointByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetBreakpointById(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointParameters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, ids: *const u32, start: u32, params: *mut DEBUG_BREAKPOINT_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetBreakpointParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn AddBreakpoint<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::AddBreakpoint(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveBreakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtension<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::AddExtension(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveExtension<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveExtension(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetExtensionByPath<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExtensionByPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtension<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCSTR, arguments: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::CallExtension(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunction<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExtensionFunction(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis32<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetWindbgExtensionApis32(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetWindbgExtensionApis64<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, api: *mut WINDBG_EXTENSION_APIS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetWindbgExtensionApis64(this, core::mem::transmute_copy(&api)).into()
            }
        }
        unsafe extern "system" fn GetNumberEventFilters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, specificevents: *mut u32, specificexceptions: *mut u32, arbitraryexceptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetNumberEventFilters(this, core::mem::transmute_copy(&specificevents), core::mem::transmute_copy(&specificexceptions), core::mem::transmute_copy(&arbitraryexceptions)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterText<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventFilterText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommand<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommand<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetEventFilterCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterParameters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterParameters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *const DEBUG_SPECIFIC_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetSpecificFilterParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgument<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgument<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetSpecificFilterArgument(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterParameters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, codes: *const u32, start: u32, params: *mut DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&codes), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterParameters<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, params: *const DEBUG_EXCEPTION_FILTER_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExceptionFilterParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommand<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommand<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExceptionFilterSecondCommand(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn WaitForEvent<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, timeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::WaitForEvent(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&timeout)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformation<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLastEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetCurrentTimeDate<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, timedate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetCurrentTimeDate(this) {
                    Ok(ok__) => {
                        timedate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemUpTime<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetCurrentSystemUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDumpFormatFlags<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, formatflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetDumpFormatFlags(this) {
                    Ok(ok__) => {
                        formatflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberTextReplacements<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, numrepl: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberTextReplacements(this) {
                    Ok(ok__) => {
                        numrepl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTextReplacement<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacement<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCSTR, dsttext: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetTextReplacement(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn RemoveTextReplacements<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveTextReplacements(this).into()
            }
        }
        unsafe extern "system" fn OutputTextReplacements<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputTextReplacements(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetAssemblyOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetAssemblyOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddAssemblyOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::AddAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveAssemblyOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetAssemblyOptions<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetAssemblyOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntax<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExpressionSyntax(this) {
                    Ok(ok__) => {
                        flags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExpressionSyntax<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExpressionSyntax(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByName<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExpressionSyntaxByName(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetNumberExpressionSyntaxes<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberExpressionSyntaxes(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNames<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetExpressionSyntaxNames(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetNumberEvents<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, events: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetNumberEvents(this) {
                    Ok(ok__) => {
                        events.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventIndexDescription<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventIndexDescription(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentEventIndex<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetCurrentEventIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNextEventIndex<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, relation: u32, value: u32, nextindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::SetNextEventIndex(this, core::mem::transmute_copy(&relation), core::mem::transmute_copy(&value)) {
                    Ok(ok__) => {
                        nextindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLogFileWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, append: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLogFileWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn OpenLogFileWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, append: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OpenLogFileWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&append)).into()
            }
        }
        unsafe extern "system" fn InputWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, inputsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::InputWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&inputsize)).into()
            }
        }
        unsafe extern "system" fn ReturnInputWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ReturnInputWide(this, core::mem::transmute(&buffer)).into()
            }
        }
        unsafe extern "system" fn OutputWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputVaListWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputVaListWide(this, core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ControlledOutputWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn ControlledOutputVaListWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, mask: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ControlledOutputVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&mask), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn OutputPromptWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputPromptWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format)).into()
            }
        }
        unsafe extern "system" fn OutputPromptVaListWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, format: windows_core::PCWSTR, args: *const i8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputPromptVaListWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&format), core::mem::transmute_copy(&args)).into()
            }
        }
        unsafe extern "system" fn GetPromptTextWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetPromptTextWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn AssembleWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, instr: windows_core::PCWSTR, endoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::AssembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute(&instr)) {
                    Ok(ok__) => {
                        endoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisassembleWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::DisassembleWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&disassemblysize), core::mem::transmute_copy(&endoffset)).into()
            }
        }
        unsafe extern "system" fn GetProcessorTypeNamesWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetProcessorTypeNamesWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetTextMacroWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, buffer: windows_core::PWSTR, buffersize: u32, macrosize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&macrosize)).into()
            }
        }
        unsafe extern "system" fn SetTextMacroWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, slot: u32, r#macro: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetTextMacroWide(this, core::mem::transmute_copy(&slot), core::mem::transmute(&r#macro)).into()
            }
        }
        unsafe extern "system" fn EvaluateWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, expression: windows_core::PCWSTR, desiredtype: u32, value: *mut DEBUG_VALUE, remainderindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::EvaluateWide(this, core::mem::transmute(&expression), core::mem::transmute_copy(&desiredtype), core::mem::transmute_copy(&value), core::mem::transmute_copy(&remainderindex)).into()
            }
        }
        unsafe extern "system" fn ExecuteWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, command: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ExecuteWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&command), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ExecuteCommandFileWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, commandfile: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ExecuteCommandFileWide(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute(&commandfile), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByIndex2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetBreakpointByIndex2(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBreakpointById2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetBreakpointById2(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddBreakpoint2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: u32, desiredid: u32, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::AddBreakpoint2(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&desiredid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveBreakpoint2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::RemoveBreakpoint2(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn AddExtensionWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, flags: u32, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::AddExtensionWide(this, core::mem::transmute(&path), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExtensionByPathWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExtensionByPathWide(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CallExtensionWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, function: windows_core::PCWSTR, arguments: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::CallExtensionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&function), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn GetExtensionFunctionWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, funcname: windows_core::PCWSTR, function: *mut super::super::super::super::Foundation::FARPROC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExtensionFunctionWide(this, core::mem::transmute_copy(&handle), core::mem::transmute(&funcname)) {
                    Ok(ok__) => {
                        function.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventFilterTextWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, textsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventFilterTextWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&textsize)).into()
            }
        }
        unsafe extern "system" fn GetEventFilterCommandWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetEventFilterCommandWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetEventFilterCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetSpecificFilterArgumentWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, argumentsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&argumentsize)).into()
            }
        }
        unsafe extern "system" fn SetSpecificFilterArgumentWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, argument: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetSpecificFilterArgumentWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&argument)).into()
            }
        }
        unsafe extern "system" fn GetExceptionFilterSecondCommandWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, commandsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&commandsize)).into()
            }
        }
        unsafe extern "system" fn SetExceptionFilterSecondCommandWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, command: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExceptionFilterSecondCommandWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&command)).into()
            }
        }
        unsafe extern "system" fn GetLastEventInformationWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLastEventInformationWide(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descriptionsize), core::mem::transmute_copy(&descriptionused)).into()
            }
        }
        unsafe extern "system" fn GetTextReplacementWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute_copy(&index), core::mem::transmute_copy(&srcbuffer), core::mem::transmute_copy(&srcbuffersize), core::mem::transmute_copy(&srcsize), core::mem::transmute_copy(&dstbuffer), core::mem::transmute_copy(&dstbuffersize), core::mem::transmute_copy(&dstsize)).into()
            }
        }
        unsafe extern "system" fn SetTextReplacementWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, srctext: windows_core::PCWSTR, dsttext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetTextReplacementWide(this, core::mem::transmute(&srctext), core::mem::transmute(&dsttext)).into()
            }
        }
        unsafe extern "system" fn SetExpressionSyntaxByNameWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, abbrevname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::SetExpressionSyntaxByNameWide(this, core::mem::transmute(&abbrevname)).into()
            }
        }
        unsafe extern "system" fn GetExpressionSyntaxNamesWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetExpressionSyntaxNamesWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&fullnamebuffer), core::mem::transmute_copy(&fullnamebuffersize), core::mem::transmute_copy(&fullnamesize), core::mem::transmute_copy(&abbrevnamebuffer), core::mem::transmute_copy(&abbrevnamebuffersize), core::mem::transmute_copy(&abbrevnamesize)).into()
            }
        }
        unsafe extern "system" fn GetEventIndexDescriptionWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, which: u32, buffer: windows_core::PCWSTR, buffersize: u32, descsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetEventIndexDescriptionWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&which), core::mem::transmute(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&descsize)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLogFile2(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OpenLogFile2(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetLogFile2Wide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, filesize: *mut u32, flags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetLogFile2Wide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn OpenLogFile2Wide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OpenLogFile2Wide(this, core::mem::transmute(&file), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionValues<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, platformid: *mut u32, win32major: *mut u32, win32minor: *mut u32, kdmajor: *mut u32, kdminor: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSystemVersionValues(this, core::mem::transmute_copy(&platformid), core::mem::transmute_copy(&win32major), core::mem::transmute_copy(&win32minor), core::mem::transmute_copy(&kdmajor), core::mem::transmute_copy(&kdminor)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionString<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSystemVersionString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSystemVersionStringWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSystemVersionStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTrace<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetContextStackTrace(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTrace<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputContextStackTrace(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStoredEventInformation<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetStoredEventInformation(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize), core::mem::transmute_copy(&contextused), core::mem::transmute_copy(&extrainformation), core::mem::transmute_copy(&extrainformationsize), core::mem::transmute_copy(&extrainformationused)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatus<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetManagedStatus(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn GetManagedStatusWide<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: *mut u32, whichstring: u32, string: windows_core::PWSTR, stringsize: u32, stringneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetManagedStatusWide(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&whichstring), core::mem::transmute_copy(&string), core::mem::transmute_copy(&stringsize), core::mem::transmute_copy(&stringneeded)).into()
            }
        }
        unsafe extern "system" fn ResetManagedStatus<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::ResetManagedStatus(this, core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetStackTraceEx<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetStackTraceEx(this, core::mem::transmute_copy(&frameoffset), core::mem::transmute_copy(&stackoffset), core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputStackTraceEx<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, frames: *const DEBUG_STACK_FRAME_EX, framessize: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetContextStackTraceEx<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetContextStackTraceEx(this, core::mem::transmute_copy(&startcontext), core::mem::transmute_copy(&startcontextsize), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&framesfilled)).into()
            }
        }
        unsafe extern "system" fn OutputContextStackTraceEx<Identity: IDebugControl7_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::OutputContextStackTraceEx(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&frames), core::mem::transmute_copy(&framessize), core::mem::transmute_copy(&framecontexts), core::mem::transmute_copy(&framecontextssize), core::mem::transmute_copy(&framecontextsentrysize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetBreakpointByGuid<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID, bp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetBreakpointByGuid(this, core::mem::transmute_copy(&guid)) {
                    Ok(ok__) => {
                        bp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetExecutionStatusEx<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugControl7_Impl::GetExecutionStatusEx(this) {
                    Ok(ok__) => {
                        status.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSynchronizationStatus<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sendsattempted: *mut u32, secondssincelastresponse: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetSynchronizationStatus(this, core::mem::transmute_copy(&sendsattempted), core::mem::transmute_copy(&secondssincelastresponse)).into()
            }
        }
        unsafe extern "system" fn GetDebuggeeType2<Identity: IDebugControl7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, class: *mut u32, qualifier: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugControl7_Impl::GetDebuggeeType2(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&class), core::mem::transmute_copy(&qualifier)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterrupt: GetInterrupt::<Identity, OFFSET>,
            SetInterrupt: SetInterrupt::<Identity, OFFSET>,
            GetInterruptTimeout: GetInterruptTimeout::<Identity, OFFSET>,
            SetInterruptTimeout: SetInterruptTimeout::<Identity, OFFSET>,
            GetLogFile: GetLogFile::<Identity, OFFSET>,
            OpenLogFile: OpenLogFile::<Identity, OFFSET>,
            CloseLogFile: CloseLogFile::<Identity, OFFSET>,
            GetLogMask: GetLogMask::<Identity, OFFSET>,
            SetLogMask: SetLogMask::<Identity, OFFSET>,
            Input: Input::<Identity, OFFSET>,
            ReturnInput: ReturnInput::<Identity, OFFSET>,
            Output: Output::<Identity, OFFSET>,
            OutputVaList: OutputVaList::<Identity, OFFSET>,
            ControlledOutput: ControlledOutput::<Identity, OFFSET>,
            ControlledOutputVaList: ControlledOutputVaList::<Identity, OFFSET>,
            OutputPrompt: OutputPrompt::<Identity, OFFSET>,
            OutputPromptVaList: OutputPromptVaList::<Identity, OFFSET>,
            GetPromptText: GetPromptText::<Identity, OFFSET>,
            OutputCurrentState: OutputCurrentState::<Identity, OFFSET>,
            OutputVersionInformation: OutputVersionInformation::<Identity, OFFSET>,
            GetNotifyEventHandle: GetNotifyEventHandle::<Identity, OFFSET>,
            SetNotifyEventHandle: SetNotifyEventHandle::<Identity, OFFSET>,
            Assemble: Assemble::<Identity, OFFSET>,
            Disassemble: Disassemble::<Identity, OFFSET>,
            GetDisassembleEffectiveOffset: GetDisassembleEffectiveOffset::<Identity, OFFSET>,
            OutputDisassembly: OutputDisassembly::<Identity, OFFSET>,
            OutputDisassemblyLines: OutputDisassemblyLines::<Identity, OFFSET>,
            GetNearInstruction: GetNearInstruction::<Identity, OFFSET>,
            GetStackTrace: GetStackTrace::<Identity, OFFSET>,
            GetReturnOffset: GetReturnOffset::<Identity, OFFSET>,
            OutputStackTrace: OutputStackTrace::<Identity, OFFSET>,
            GetDebuggeeType: GetDebuggeeType::<Identity, OFFSET>,
            GetActualProcessorType: GetActualProcessorType::<Identity, OFFSET>,
            GetExecutingProcessorType: GetExecutingProcessorType::<Identity, OFFSET>,
            GetNumberPossibleExecutingProcessorTypes: GetNumberPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetPossibleExecutingProcessorTypes: GetPossibleExecutingProcessorTypes::<Identity, OFFSET>,
            GetNumberProcessors: GetNumberProcessors::<Identity, OFFSET>,
            GetSystemVersion: GetSystemVersion::<Identity, OFFSET>,
            GetPageSize: GetPageSize::<Identity, OFFSET>,
            IsPointer64Bit: IsPointer64Bit::<Identity, OFFSET>,
            ReadBugCheckData: ReadBugCheckData::<Identity, OFFSET>,
            GetNumberSupportedProcessorTypes: GetNumberSupportedProcessorTypes::<Identity, OFFSET>,
            GetSupportedProcessorTypes: GetSupportedProcessorTypes::<Identity, OFFSET>,
            GetProcessorTypeNames: GetProcessorTypeNames::<Identity, OFFSET>,
            GetEffectiveProcessorType: GetEffectiveProcessorType::<Identity, OFFSET>,
            SetEffectiveProcessorType: SetEffectiveProcessorType::<Identity, OFFSET>,
            GetExecutionStatus: GetExecutionStatus::<Identity, OFFSET>,
            SetExecutionStatus: SetExecutionStatus::<Identity, OFFSET>,
            GetCodeLevel: GetCodeLevel::<Identity, OFFSET>,
            SetCodeLevel: SetCodeLevel::<Identity, OFFSET>,
            GetEngineOptions: GetEngineOptions::<Identity, OFFSET>,
            AddEngineOptions: AddEngineOptions::<Identity, OFFSET>,
            RemoveEngineOptions: RemoveEngineOptions::<Identity, OFFSET>,
            SetEngineOptions: SetEngineOptions::<Identity, OFFSET>,
            GetSystemErrorControl: GetSystemErrorControl::<Identity, OFFSET>,
            SetSystemErrorControl: SetSystemErrorControl::<Identity, OFFSET>,
            GetTextMacro: GetTextMacro::<Identity, OFFSET>,
            SetTextMacro: SetTextMacro::<Identity, OFFSET>,
            GetRadix: GetRadix::<Identity, OFFSET>,
            SetRadix: SetRadix::<Identity, OFFSET>,
            Evaluate: Evaluate::<Identity, OFFSET>,
            CoerceValue: CoerceValue::<Identity, OFFSET>,
            CoerceValues: CoerceValues::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            ExecuteCommandFile: ExecuteCommandFile::<Identity, OFFSET>,
            GetNumberBreakpoints: GetNumberBreakpoints::<Identity, OFFSET>,
            GetBreakpointByIndex: GetBreakpointByIndex::<Identity, OFFSET>,
            GetBreakpointById: GetBreakpointById::<Identity, OFFSET>,
            GetBreakpointParameters: GetBreakpointParameters::<Identity, OFFSET>,
            AddBreakpoint: AddBreakpoint::<Identity, OFFSET>,
            RemoveBreakpoint: RemoveBreakpoint::<Identity, OFFSET>,
            AddExtension: AddExtension::<Identity, OFFSET>,
            RemoveExtension: RemoveExtension::<Identity, OFFSET>,
            GetExtensionByPath: GetExtensionByPath::<Identity, OFFSET>,
            CallExtension: CallExtension::<Identity, OFFSET>,
            GetExtensionFunction: GetExtensionFunction::<Identity, OFFSET>,
            GetWindbgExtensionApis32: GetWindbgExtensionApis32::<Identity, OFFSET>,
            GetWindbgExtensionApis64: GetWindbgExtensionApis64::<Identity, OFFSET>,
            GetNumberEventFilters: GetNumberEventFilters::<Identity, OFFSET>,
            GetEventFilterText: GetEventFilterText::<Identity, OFFSET>,
            GetEventFilterCommand: GetEventFilterCommand::<Identity, OFFSET>,
            SetEventFilterCommand: SetEventFilterCommand::<Identity, OFFSET>,
            GetSpecificFilterParameters: GetSpecificFilterParameters::<Identity, OFFSET>,
            SetSpecificFilterParameters: SetSpecificFilterParameters::<Identity, OFFSET>,
            GetSpecificFilterArgument: GetSpecificFilterArgument::<Identity, OFFSET>,
            SetSpecificFilterArgument: SetSpecificFilterArgument::<Identity, OFFSET>,
            GetExceptionFilterParameters: GetExceptionFilterParameters::<Identity, OFFSET>,
            SetExceptionFilterParameters: SetExceptionFilterParameters::<Identity, OFFSET>,
            GetExceptionFilterSecondCommand: GetExceptionFilterSecondCommand::<Identity, OFFSET>,
            SetExceptionFilterSecondCommand: SetExceptionFilterSecondCommand::<Identity, OFFSET>,
            WaitForEvent: WaitForEvent::<Identity, OFFSET>,
            GetLastEventInformation: GetLastEventInformation::<Identity, OFFSET>,
            GetCurrentTimeDate: GetCurrentTimeDate::<Identity, OFFSET>,
            GetCurrentSystemUpTime: GetCurrentSystemUpTime::<Identity, OFFSET>,
            GetDumpFormatFlags: GetDumpFormatFlags::<Identity, OFFSET>,
            GetNumberTextReplacements: GetNumberTextReplacements::<Identity, OFFSET>,
            GetTextReplacement: GetTextReplacement::<Identity, OFFSET>,
            SetTextReplacement: SetTextReplacement::<Identity, OFFSET>,
            RemoveTextReplacements: RemoveTextReplacements::<Identity, OFFSET>,
            OutputTextReplacements: OutputTextReplacements::<Identity, OFFSET>,
            GetAssemblyOptions: GetAssemblyOptions::<Identity, OFFSET>,
            AddAssemblyOptions: AddAssemblyOptions::<Identity, OFFSET>,
            RemoveAssemblyOptions: RemoveAssemblyOptions::<Identity, OFFSET>,
            SetAssemblyOptions: SetAssemblyOptions::<Identity, OFFSET>,
            GetExpressionSyntax: GetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntax: SetExpressionSyntax::<Identity, OFFSET>,
            SetExpressionSyntaxByName: SetExpressionSyntaxByName::<Identity, OFFSET>,
            GetNumberExpressionSyntaxes: GetNumberExpressionSyntaxes::<Identity, OFFSET>,
            GetExpressionSyntaxNames: GetExpressionSyntaxNames::<Identity, OFFSET>,
            GetNumberEvents: GetNumberEvents::<Identity, OFFSET>,
            GetEventIndexDescription: GetEventIndexDescription::<Identity, OFFSET>,
            GetCurrentEventIndex: GetCurrentEventIndex::<Identity, OFFSET>,
            SetNextEventIndex: SetNextEventIndex::<Identity, OFFSET>,
            GetLogFileWide: GetLogFileWide::<Identity, OFFSET>,
            OpenLogFileWide: OpenLogFileWide::<Identity, OFFSET>,
            InputWide: InputWide::<Identity, OFFSET>,
            ReturnInputWide: ReturnInputWide::<Identity, OFFSET>,
            OutputWide: OutputWide::<Identity, OFFSET>,
            OutputVaListWide: OutputVaListWide::<Identity, OFFSET>,
            ControlledOutputWide: ControlledOutputWide::<Identity, OFFSET>,
            ControlledOutputVaListWide: ControlledOutputVaListWide::<Identity, OFFSET>,
            OutputPromptWide: OutputPromptWide::<Identity, OFFSET>,
            OutputPromptVaListWide: OutputPromptVaListWide::<Identity, OFFSET>,
            GetPromptTextWide: GetPromptTextWide::<Identity, OFFSET>,
            AssembleWide: AssembleWide::<Identity, OFFSET>,
            DisassembleWide: DisassembleWide::<Identity, OFFSET>,
            GetProcessorTypeNamesWide: GetProcessorTypeNamesWide::<Identity, OFFSET>,
            GetTextMacroWide: GetTextMacroWide::<Identity, OFFSET>,
            SetTextMacroWide: SetTextMacroWide::<Identity, OFFSET>,
            EvaluateWide: EvaluateWide::<Identity, OFFSET>,
            ExecuteWide: ExecuteWide::<Identity, OFFSET>,
            ExecuteCommandFileWide: ExecuteCommandFileWide::<Identity, OFFSET>,
            GetBreakpointByIndex2: GetBreakpointByIndex2::<Identity, OFFSET>,
            GetBreakpointById2: GetBreakpointById2::<Identity, OFFSET>,
            AddBreakpoint2: AddBreakpoint2::<Identity, OFFSET>,
            RemoveBreakpoint2: RemoveBreakpoint2::<Identity, OFFSET>,
            AddExtensionWide: AddExtensionWide::<Identity, OFFSET>,
            GetExtensionByPathWide: GetExtensionByPathWide::<Identity, OFFSET>,
            CallExtensionWide: CallExtensionWide::<Identity, OFFSET>,
            GetExtensionFunctionWide: GetExtensionFunctionWide::<Identity, OFFSET>,
            GetEventFilterTextWide: GetEventFilterTextWide::<Identity, OFFSET>,
            GetEventFilterCommandWide: GetEventFilterCommandWide::<Identity, OFFSET>,
            SetEventFilterCommandWide: SetEventFilterCommandWide::<Identity, OFFSET>,
            GetSpecificFilterArgumentWide: GetSpecificFilterArgumentWide::<Identity, OFFSET>,
            SetSpecificFilterArgumentWide: SetSpecificFilterArgumentWide::<Identity, OFFSET>,
            GetExceptionFilterSecondCommandWide: GetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            SetExceptionFilterSecondCommandWide: SetExceptionFilterSecondCommandWide::<Identity, OFFSET>,
            GetLastEventInformationWide: GetLastEventInformationWide::<Identity, OFFSET>,
            GetTextReplacementWide: GetTextReplacementWide::<Identity, OFFSET>,
            SetTextReplacementWide: SetTextReplacementWide::<Identity, OFFSET>,
            SetExpressionSyntaxByNameWide: SetExpressionSyntaxByNameWide::<Identity, OFFSET>,
            GetExpressionSyntaxNamesWide: GetExpressionSyntaxNamesWide::<Identity, OFFSET>,
            GetEventIndexDescriptionWide: GetEventIndexDescriptionWide::<Identity, OFFSET>,
            GetLogFile2: GetLogFile2::<Identity, OFFSET>,
            OpenLogFile2: OpenLogFile2::<Identity, OFFSET>,
            GetLogFile2Wide: GetLogFile2Wide::<Identity, OFFSET>,
            OpenLogFile2Wide: OpenLogFile2Wide::<Identity, OFFSET>,
            GetSystemVersionValues: GetSystemVersionValues::<Identity, OFFSET>,
            GetSystemVersionString: GetSystemVersionString::<Identity, OFFSET>,
            GetSystemVersionStringWide: GetSystemVersionStringWide::<Identity, OFFSET>,
            GetContextStackTrace: GetContextStackTrace::<Identity, OFFSET>,
            OutputContextStackTrace: OutputContextStackTrace::<Identity, OFFSET>,
            GetStoredEventInformation: GetStoredEventInformation::<Identity, OFFSET>,
            GetManagedStatus: GetManagedStatus::<Identity, OFFSET>,
            GetManagedStatusWide: GetManagedStatusWide::<Identity, OFFSET>,
            ResetManagedStatus: ResetManagedStatus::<Identity, OFFSET>,
            GetStackTraceEx: GetStackTraceEx::<Identity, OFFSET>,
            OutputStackTraceEx: OutputStackTraceEx::<Identity, OFFSET>,
            GetContextStackTraceEx: GetContextStackTraceEx::<Identity, OFFSET>,
            OutputContextStackTraceEx: OutputContextStackTraceEx::<Identity, OFFSET>,
            GetBreakpointByGuid: GetBreakpointByGuid::<Identity, OFFSET>,
            GetExecutionStatusEx: GetExecutionStatusEx::<Identity, OFFSET>,
            GetSynchronizationStatus: GetSynchronizationStatus::<Identity, OFFSET>,
            GetDebuggeeType2: GetDebuggeeType2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugControl7 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Kernel")]
impl windows_core::RuntimeName for IDebugControl7 {}
windows_core::imp::define_interface!(IDebugDataSpaces, IDebugDataSpaces_Vtbl, 0x88f7dfab_3ea7_4c3a_aefb_c4e8106173aa);
windows_core::imp::interface_hierarchy!(IDebugDataSpaces, windows_core::IUnknown);
impl IDebugDataSpaces {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtual)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtual)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchVirtual)(windows_core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPhysical)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePhysical)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadControl)(windows_core::Interface::as_raw(self), processor, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteControl)(windows_core::Interface::as_raw(self), processor, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReadMsr)(windows_core::Interface::as_raw(self), msr, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CheckLowMemory(&self) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadDebuggerData)(windows_core::Interface::as_raw(self), index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadProcessorSystemData)(windows_core::Interface::as_raw(self), processor, index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, *const core::ffi::c_void, u32, u32, *mut u64) -> windows_core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut u64) -> windows_core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const u64) -> windows_core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugDataSpaces_Impl: windows_core::IUnknownImpl {
    fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64>;
    fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadPointersVirtual(&self, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::Result<()>;
    fn WritePointersVirtual(&self, count: u32, offset: u64, ptrs: *const u64) -> windows_core::Result<()>;
    fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64>;
    fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()>;
    fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn CheckLowMemory(&self) -> windows_core::Result<()>;
    fn ReadDebuggerData(&self, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
}
impl IDebugDataSpaces_Vtbl {
    pub const fn new<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadVirtual<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtual<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn SearchVirtual<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces_Impl::SearchVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&length), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&patterngranularity)) {
                    Ok(ok__) => {
                        matchoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadVirtualUncached<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtualUncached<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadPointersVirtual<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadPointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn WritePointersVirtual<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WritePointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn ReadPhysical<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WritePhysical<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WritePhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadControl<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteControl<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadIo<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteIo<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadMsr<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces_Impl::ReadMsr(this, core::mem::transmute_copy(&msr)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn WriteMsr<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteMsr(this, core::mem::transmute_copy(&msr), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn ReadBusData<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteBusData<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::WriteBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn CheckLowMemory<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::CheckLowMemory(this).into()
            }
        }
        unsafe extern "system" fn ReadDebuggerData<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadDebuggerData(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn ReadProcessorSystemData<Identity: IDebugDataSpaces_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces_Impl::ReadProcessorSystemData(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadVirtual: ReadVirtual::<Identity, OFFSET>,
            WriteVirtual: WriteVirtual::<Identity, OFFSET>,
            SearchVirtual: SearchVirtual::<Identity, OFFSET>,
            ReadVirtualUncached: ReadVirtualUncached::<Identity, OFFSET>,
            WriteVirtualUncached: WriteVirtualUncached::<Identity, OFFSET>,
            ReadPointersVirtual: ReadPointersVirtual::<Identity, OFFSET>,
            WritePointersVirtual: WritePointersVirtual::<Identity, OFFSET>,
            ReadPhysical: ReadPhysical::<Identity, OFFSET>,
            WritePhysical: WritePhysical::<Identity, OFFSET>,
            ReadControl: ReadControl::<Identity, OFFSET>,
            WriteControl: WriteControl::<Identity, OFFSET>,
            ReadIo: ReadIo::<Identity, OFFSET>,
            WriteIo: WriteIo::<Identity, OFFSET>,
            ReadMsr: ReadMsr::<Identity, OFFSET>,
            WriteMsr: WriteMsr::<Identity, OFFSET>,
            ReadBusData: ReadBusData::<Identity, OFFSET>,
            WriteBusData: WriteBusData::<Identity, OFFSET>,
            CheckLowMemory: CheckLowMemory::<Identity, OFFSET>,
            ReadDebuggerData: ReadDebuggerData::<Identity, OFFSET>,
            ReadProcessorSystemData: ReadProcessorSystemData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugDataSpaces as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugDataSpaces {}
windows_core::imp::define_interface!(IDebugDataSpaces2, IDebugDataSpaces2_Vtbl, 0x7a5e852f_96e9_468f_ac1b_0b3addc4a049);
windows_core::imp::interface_hierarchy!(IDebugDataSpaces2, windows_core::IUnknown);
impl IDebugDataSpaces2 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtual)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtual)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchVirtual)(windows_core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPhysical)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePhysical)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadControl)(windows_core::Interface::as_raw(self), processor, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteControl)(windows_core::Interface::as_raw(self), processor, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReadMsr)(windows_core::Interface::as_raw(self), msr, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CheckLowMemory(&self) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadDebuggerData)(windows_core::Interface::as_raw(self), index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadProcessorSystemData)(windows_core::Interface::as_raw(self), processor, index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).VirtualToPhysical)(windows_core::Interface::as_raw(self), r#virtual, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: Option<&mut [u64]>, levels: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), levels.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadHandleData)(windows_core::Interface::as_raw(self), handle, datatype, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillVirtual)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillPhysical)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryVirtual)(windows_core::Interface::as_raw(self), offset, info as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, *const core::ffi::c_void, u32, u32, *mut u64) -> windows_core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut u64) -> windows_core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const u64) -> windows_core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Memory"))]
    QueryVirtual: usize,
}
#[cfg(feature = "Win32_System_Memory")]
pub trait IDebugDataSpaces2_Impl: windows_core::IUnknownImpl {
    fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64>;
    fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadPointersVirtual(&self, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::Result<()>;
    fn WritePointersVirtual(&self, count: u32, offset: u64, ptrs: *const u64) -> windows_core::Result<()>;
    fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64>;
    fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()>;
    fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn CheckLowMemory(&self) -> windows_core::Result<()>;
    fn ReadDebuggerData(&self, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64>;
    fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::Result<()>;
    fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Memory")]
impl IDebugDataSpaces2_Vtbl {
    pub const fn new<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn SearchVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces2_Impl::SearchVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&length), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&patterngranularity)) {
                    Ok(ok__) => {
                        matchoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadVirtualUncached<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtualUncached<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadPointersVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadPointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn WritePointersVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WritePointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn ReadPhysical<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WritePhysical<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WritePhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadControl<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteControl<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadIo<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteIo<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadMsr<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces2_Impl::ReadMsr(this, core::mem::transmute_copy(&msr)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn WriteMsr<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteMsr(this, core::mem::transmute_copy(&msr), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn ReadBusData<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteBusData<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::WriteBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn CheckLowMemory<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::CheckLowMemory(this).into()
            }
        }
        unsafe extern "system" fn ReadDebuggerData<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadDebuggerData(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn ReadProcessorSystemData<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadProcessorSystemData(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn VirtualToPhysical<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces2_Impl::VirtualToPhysical(this, core::mem::transmute_copy(&r#virtual)) {
                    Ok(ok__) => {
                        physical.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetVirtualTranslationPhysicalOffsets<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::GetVirtualTranslationPhysicalOffsets(this, core::mem::transmute_copy(&r#virtual), core::mem::transmute_copy(&offsets), core::mem::transmute_copy(&offsetssize), core::mem::transmute_copy(&levels)).into()
            }
        }
        unsafe extern "system" fn ReadHandleData<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::ReadHandleData(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&datatype), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn FillVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::FillVirtual(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn FillPhysical<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::FillPhysical(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn QueryVirtual<Identity: IDebugDataSpaces2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces2_Impl::QueryVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&info)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadVirtual: ReadVirtual::<Identity, OFFSET>,
            WriteVirtual: WriteVirtual::<Identity, OFFSET>,
            SearchVirtual: SearchVirtual::<Identity, OFFSET>,
            ReadVirtualUncached: ReadVirtualUncached::<Identity, OFFSET>,
            WriteVirtualUncached: WriteVirtualUncached::<Identity, OFFSET>,
            ReadPointersVirtual: ReadPointersVirtual::<Identity, OFFSET>,
            WritePointersVirtual: WritePointersVirtual::<Identity, OFFSET>,
            ReadPhysical: ReadPhysical::<Identity, OFFSET>,
            WritePhysical: WritePhysical::<Identity, OFFSET>,
            ReadControl: ReadControl::<Identity, OFFSET>,
            WriteControl: WriteControl::<Identity, OFFSET>,
            ReadIo: ReadIo::<Identity, OFFSET>,
            WriteIo: WriteIo::<Identity, OFFSET>,
            ReadMsr: ReadMsr::<Identity, OFFSET>,
            WriteMsr: WriteMsr::<Identity, OFFSET>,
            ReadBusData: ReadBusData::<Identity, OFFSET>,
            WriteBusData: WriteBusData::<Identity, OFFSET>,
            CheckLowMemory: CheckLowMemory::<Identity, OFFSET>,
            ReadDebuggerData: ReadDebuggerData::<Identity, OFFSET>,
            ReadProcessorSystemData: ReadProcessorSystemData::<Identity, OFFSET>,
            VirtualToPhysical: VirtualToPhysical::<Identity, OFFSET>,
            GetVirtualTranslationPhysicalOffsets: GetVirtualTranslationPhysicalOffsets::<Identity, OFFSET>,
            ReadHandleData: ReadHandleData::<Identity, OFFSET>,
            FillVirtual: FillVirtual::<Identity, OFFSET>,
            FillPhysical: FillPhysical::<Identity, OFFSET>,
            QueryVirtual: QueryVirtual::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugDataSpaces2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Memory")]
impl windows_core::RuntimeName for IDebugDataSpaces2 {}
windows_core::imp::define_interface!(IDebugDataSpaces3, IDebugDataSpaces3_Vtbl, 0x23f79d6c_8aaf_4f7c_a607_9995f5407e63);
windows_core::imp::interface_hierarchy!(IDebugDataSpaces3, windows_core::IUnknown);
impl IDebugDataSpaces3 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtual)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtual)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchVirtual)(windows_core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPhysical)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePhysical)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadControl)(windows_core::Interface::as_raw(self), processor, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteControl)(windows_core::Interface::as_raw(self), processor, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReadMsr)(windows_core::Interface::as_raw(self), msr, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CheckLowMemory(&self) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadDebuggerData)(windows_core::Interface::as_raw(self), index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadProcessorSystemData)(windows_core::Interface::as_raw(self), processor, index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).VirtualToPhysical)(windows_core::Interface::as_raw(self), r#virtual, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: Option<&mut [u64]>, levels: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), levels.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadHandleData)(windows_core::Interface::as_raw(self), handle, datatype, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillVirtual)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillPhysical)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryVirtual)(windows_core::Interface::as_raw(self), offset, info as _).ok() }
    }
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub unsafe fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadImageNtHeaders)(windows_core::Interface::as_raw(self), imagebase, headers as _).ok() }
    }
    pub unsafe fn ReadTagged(&self, tag: *const windows_core::GUID, offset: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, totalsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTagged)(windows_core::Interface::as_raw(self), tag, offset, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, totalsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn StartEnumTagged(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartEnumTagged)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextTagged(&self, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNextTagged)(windows_core::Interface::as_raw(self), handle, tag as _, size as _).ok() }
    }
    pub unsafe fn EndEnumTagged(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndEnumTagged)(windows_core::Interface::as_raw(self), handle).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, *const core::ffi::c_void, u32, u32, *mut u64) -> windows_core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut u64) -> windows_core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const u64) -> windows_core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *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(*mut core::ffi::c_void, u64, *mut super::IMAGE_NT_HEADERS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemInformation"))]
    ReadImageNtHeaders: usize,
    pub ReadTagged: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub StartEnumTagged: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetNextTagged: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut windows_core::GUID, *mut u32) -> windows_core::HRESULT,
    pub EndEnumTagged: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
pub trait IDebugDataSpaces3_Impl: windows_core::IUnknownImpl {
    fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64>;
    fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadPointersVirtual(&self, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::Result<()>;
    fn WritePointersVirtual(&self, count: u32, offset: u64, ptrs: *const u64) -> windows_core::Result<()>;
    fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64>;
    fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()>;
    fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn CheckLowMemory(&self) -> windows_core::Result<()>;
    fn ReadDebuggerData(&self, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64>;
    fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::Result<()>;
    fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()>;
    fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::Result<()>;
    fn ReadTagged(&self, tag: *const windows_core::GUID, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, totalsize: *mut u32) -> windows_core::Result<()>;
    fn StartEnumTagged(&self) -> windows_core::Result<u64>;
    fn GetNextTagged(&self, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::Result<()>;
    fn EndEnumTagged(&self, handle: u64) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
impl IDebugDataSpaces3_Vtbl {
    pub const fn new<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn SearchVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces3_Impl::SearchVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&length), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&patterngranularity)) {
                    Ok(ok__) => {
                        matchoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadVirtualUncached<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtualUncached<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadPointersVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadPointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn WritePointersVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WritePointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn ReadPhysical<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WritePhysical<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WritePhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadControl<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteControl<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadIo<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteIo<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadMsr<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces3_Impl::ReadMsr(this, core::mem::transmute_copy(&msr)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn WriteMsr<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteMsr(this, core::mem::transmute_copy(&msr), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn ReadBusData<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteBusData<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::WriteBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn CheckLowMemory<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::CheckLowMemory(this).into()
            }
        }
        unsafe extern "system" fn ReadDebuggerData<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadDebuggerData(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn ReadProcessorSystemData<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadProcessorSystemData(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn VirtualToPhysical<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces3_Impl::VirtualToPhysical(this, core::mem::transmute_copy(&r#virtual)) {
                    Ok(ok__) => {
                        physical.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetVirtualTranslationPhysicalOffsets<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::GetVirtualTranslationPhysicalOffsets(this, core::mem::transmute_copy(&r#virtual), core::mem::transmute_copy(&offsets), core::mem::transmute_copy(&offsetssize), core::mem::transmute_copy(&levels)).into()
            }
        }
        unsafe extern "system" fn ReadHandleData<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadHandleData(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&datatype), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn FillVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::FillVirtual(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn FillPhysical<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::FillPhysical(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn QueryVirtual<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::QueryVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&info)).into()
            }
        }
        unsafe extern "system" fn ReadImageNtHeaders<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadImageNtHeaders(this, core::mem::transmute_copy(&imagebase), core::mem::transmute_copy(&headers)).into()
            }
        }
        unsafe extern "system" fn ReadTagged<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::ReadTagged(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&totalsize)).into()
            }
        }
        unsafe extern "system" fn StartEnumTagged<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces3_Impl::StartEnumTagged(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextTagged<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::GetNextTagged(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&tag), core::mem::transmute_copy(&size)).into()
            }
        }
        unsafe extern "system" fn EndEnumTagged<Identity: IDebugDataSpaces3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces3_Impl::EndEnumTagged(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadVirtual: ReadVirtual::<Identity, OFFSET>,
            WriteVirtual: WriteVirtual::<Identity, OFFSET>,
            SearchVirtual: SearchVirtual::<Identity, OFFSET>,
            ReadVirtualUncached: ReadVirtualUncached::<Identity, OFFSET>,
            WriteVirtualUncached: WriteVirtualUncached::<Identity, OFFSET>,
            ReadPointersVirtual: ReadPointersVirtual::<Identity, OFFSET>,
            WritePointersVirtual: WritePointersVirtual::<Identity, OFFSET>,
            ReadPhysical: ReadPhysical::<Identity, OFFSET>,
            WritePhysical: WritePhysical::<Identity, OFFSET>,
            ReadControl: ReadControl::<Identity, OFFSET>,
            WriteControl: WriteControl::<Identity, OFFSET>,
            ReadIo: ReadIo::<Identity, OFFSET>,
            WriteIo: WriteIo::<Identity, OFFSET>,
            ReadMsr: ReadMsr::<Identity, OFFSET>,
            WriteMsr: WriteMsr::<Identity, OFFSET>,
            ReadBusData: ReadBusData::<Identity, OFFSET>,
            WriteBusData: WriteBusData::<Identity, OFFSET>,
            CheckLowMemory: CheckLowMemory::<Identity, OFFSET>,
            ReadDebuggerData: ReadDebuggerData::<Identity, OFFSET>,
            ReadProcessorSystemData: ReadProcessorSystemData::<Identity, OFFSET>,
            VirtualToPhysical: VirtualToPhysical::<Identity, OFFSET>,
            GetVirtualTranslationPhysicalOffsets: GetVirtualTranslationPhysicalOffsets::<Identity, OFFSET>,
            ReadHandleData: ReadHandleData::<Identity, OFFSET>,
            FillVirtual: FillVirtual::<Identity, OFFSET>,
            FillPhysical: FillPhysical::<Identity, OFFSET>,
            QueryVirtual: QueryVirtual::<Identity, OFFSET>,
            ReadImageNtHeaders: ReadImageNtHeaders::<Identity, OFFSET>,
            ReadTagged: ReadTagged::<Identity, OFFSET>,
            StartEnumTagged: StartEnumTagged::<Identity, OFFSET>,
            GetNextTagged: GetNextTagged::<Identity, OFFSET>,
            EndEnumTagged: EndEnumTagged::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugDataSpaces3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
impl windows_core::RuntimeName for IDebugDataSpaces3 {}
windows_core::imp::define_interface!(IDebugDataSpaces4, IDebugDataSpaces4_Vtbl, 0xd98ada1f_29e9_4ef5_a6c0_e53349883212);
windows_core::imp::interface_hierarchy!(IDebugDataSpaces4, windows_core::IUnknown);
impl IDebugDataSpaces4 {
    pub unsafe fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtual)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtual)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchVirtual)(windows_core::Interface::as_raw(self), offset, length, pattern, patternsize, patterngranularity, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteVirtualUncached)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPointersVirtual(&self, offset: u64, ptrs: &mut [u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn WritePointersVirtual(&self, offset: u64, ptrs: &[u64]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePointersVirtual)(windows_core::Interface::as_raw(self), ptrs.len().try_into().unwrap(), offset, core::mem::transmute(ptrs.as_ptr())).ok() }
    }
    pub unsafe fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPhysical)(windows_core::Interface::as_raw(self), offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePhysical)(windows_core::Interface::as_raw(self), offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadControl)(windows_core::Interface::as_raw(self), processor, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteControl)(windows_core::Interface::as_raw(self), processor, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteIo)(windows_core::Interface::as_raw(self), interfacetype, busnumber, addressspace, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReadMsr)(windows_core::Interface::as_raw(self), msr, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteBusData)(windows_core::Interface::as_raw(self), busdatatype, busnumber, slotnumber, offset, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CheckLowMemory(&self) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadDebuggerData)(windows_core::Interface::as_raw(self), index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadProcessorSystemData)(windows_core::Interface::as_raw(self), processor, index, buffer as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).VirtualToPhysical)(windows_core::Interface::as_raw(self), r#virtual, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: Option<&mut [u64]>, levels: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), levels.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, datasize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadHandleData)(windows_core::Interface::as_raw(self), handle, datatype, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, datasize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillVirtual)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FillPhysical)(windows_core::Interface::as_raw(self), start, size, pattern, patternsize, filled.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_System_Memory")]
    pub unsafe fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryVirtual)(windows_core::Interface::as_raw(self), offset, info as _).ok() }
    }
    #[cfg(feature = "Win32_System_SystemInformation")]
    pub unsafe fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadImageNtHeaders)(windows_core::Interface::as_raw(self), imagebase, headers as _).ok() }
    }
    pub unsafe fn ReadTagged(&self, tag: *const windows_core::GUID, offset: u32, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, totalsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTagged)(windows_core::Interface::as_raw(self), tag, offset, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, totalsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn StartEnumTagged(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartEnumTagged)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextTagged(&self, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNextTagged)(windows_core::Interface::as_raw(self), handle, tag as _, size as _).ok() }
    }
    pub unsafe fn EndEnumTagged(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, buffersize: u32, infosize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetInformation)(windows_core::Interface::as_raw(self), space, which, offset, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, infosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetNextDifferentlyValidOffsetVirtual(&self, offset: u64) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNextDifferentlyValidOffsetVirtual)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetValidRegionVirtual(&self, base: u64, size: u32, validbase: *mut u64, validsize: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValidRegionVirtual)(windows_core::Interface::as_raw(self), base, size, validbase as _, validsize as _).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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchVirtual2)(windows_core::Interface::as_raw(self), offset, length, flags, pattern, patternsize, patterngranularity, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ReadMultiByteStringVirtual(&self, offset: u64, maxbytes: u32, buffer: Option<&mut [u8]>, stringbytes: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringbytes.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadMultiByteStringVirtualWide(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: Option<&mut [u16]>, stringbytes: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringbytes.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadUnicodeStringVirtual(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: Option<&mut [u8]>, stringbytes: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringbytes.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadUnicodeStringVirtualWide(&self, offset: u64, maxbytes: u32, buffer: Option<&mut [u16]>, stringbytes: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringbytes.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPhysical2(&self, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadPhysical2)(windows_core::Interface::as_raw(self), offset, flags, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WritePhysical2(&self, offset: u64, flags: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WritePhysical2)(windows_core::Interface::as_raw(self), offset, flags, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugDataSpaces4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReadVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SearchVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, *const core::ffi::c_void, u32, u32, *mut u64) -> windows_core::HRESULT,
    pub ReadVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteVirtualUncached: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadPointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut u64) -> windows_core::HRESULT,
    pub WritePointersVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const u64) -> windows_core::HRESULT,
    pub ReadPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WritePhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteControl: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteIo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u64, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub WriteMsr: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ReadBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteBusData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub CheckLowMemory: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ReadDebuggerData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadProcessorSystemData: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub VirtualToPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub GetVirtualTranslationPhysicalOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadHandleData: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub FillPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Memory")]
    pub QueryVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *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(*mut core::ffi::c_void, u64, *mut super::IMAGE_NT_HEADERS64) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemInformation"))]
    ReadImageNtHeaders: usize,
    pub ReadTagged: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub StartEnumTagged: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetNextTagged: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut windows_core::GUID, *mut u32) -> windows_core::HRESULT,
    pub EndEnumTagged: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetOffsetInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetNextDifferentlyValidOffsetVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub GetValidRegionVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub SearchVirtual2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, u32, *mut u64) -> windows_core::HRESULT,
    pub ReadMultiByteStringVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadMultiByteStringVirtualWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadUnicodeStringVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadUnicodeStringVirtualWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub ReadPhysical2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WritePhysical2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
pub trait IDebugDataSpaces4_Impl: windows_core::IUnknownImpl {
    fn ReadVirtual(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtual(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn SearchVirtual(&self, offset: u64, length: u64, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64>;
    fn ReadVirtualUncached(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteVirtualUncached(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadPointersVirtual(&self, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::Result<()>;
    fn WritePointersVirtual(&self, count: u32, offset: u64, ptrs: *const u64) -> windows_core::Result<()>;
    fn ReadPhysical(&self, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WritePhysical(&self, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadControl(&self, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteControl(&self, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteIo(&self, interfacetype: u32, busnumber: u32, addressspace: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn ReadMsr(&self, msr: u32) -> windows_core::Result<u64>;
    fn WriteMsr(&self, msr: u32, value: u64) -> windows_core::Result<()>;
    fn ReadBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteBusData(&self, busdatatype: u32, busnumber: u32, slotnumber: u32, offset: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn CheckLowMemory(&self) -> windows_core::Result<()>;
    fn ReadDebuggerData(&self, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn ReadProcessorSystemData(&self, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn VirtualToPhysical(&self, r#virtual: u64) -> windows_core::Result<u64>;
    fn GetVirtualTranslationPhysicalOffsets(&self, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::Result<()>;
    fn ReadHandleData(&self, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::Result<()>;
    fn FillVirtual(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn FillPhysical(&self, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::Result<()>;
    fn QueryVirtual(&self, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::Result<()>;
    fn ReadImageNtHeaders(&self, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::Result<()>;
    fn ReadTagged(&self, tag: *const windows_core::GUID, offset: u32, buffer: *mut core::ffi::c_void, buffersize: u32, totalsize: *mut u32) -> windows_core::Result<()>;
    fn StartEnumTagged(&self) -> windows_core::Result<u64>;
    fn GetNextTagged(&self, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::Result<()>;
    fn EndEnumTagged(&self, handle: u64) -> windows_core::Result<()>;
    fn GetOffsetInformation(&self, space: u32, which: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, infosize: *mut u32) -> windows_core::Result<()>;
    fn GetNextDifferentlyValidOffsetVirtual(&self, offset: u64) -> windows_core::Result<u64>;
    fn GetValidRegionVirtual(&self, base: u64, size: u32, validbase: *mut u64, validsize: *mut u32) -> windows_core::Result<()>;
    fn SearchVirtual2(&self, offset: u64, length: u64, flags: u32, pattern: *const core::ffi::c_void, patternsize: u32, patterngranularity: u32) -> windows_core::Result<u64>;
    fn ReadMultiByteStringVirtual(&self, offset: u64, maxbytes: u32, buffer: windows_core::PSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::Result<()>;
    fn ReadMultiByteStringVirtualWide(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: windows_core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::Result<()>;
    fn ReadUnicodeStringVirtual(&self, offset: u64, maxbytes: u32, codepage: u32, buffer: windows_core::PSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::Result<()>;
    fn ReadUnicodeStringVirtualWide(&self, offset: u64, maxbytes: u32, buffer: windows_core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::Result<()>;
    fn ReadPhysical2(&self, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WritePhysical2(&self, offset: u64, flags: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
impl IDebugDataSpaces4_Vtbl {
    pub const fn new<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn SearchVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::SearchVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&length), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&patterngranularity)) {
                    Ok(ok__) => {
                        matchoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadVirtualUncached<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteVirtualUncached<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteVirtualUncached(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadPointersVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadPointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn WritePointersVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, offset: u64, ptrs: *const u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WritePointersVirtual(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&ptrs)).into()
            }
        }
        unsafe extern "system" fn ReadPhysical<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WritePhysical<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WritePhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadControl<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteControl<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, offset: u64, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteControl(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadIo<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteIo<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteIo(this, core::mem::transmute_copy(&interfacetype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&addressspace), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadMsr<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::ReadMsr(this, core::mem::transmute_copy(&msr)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn WriteMsr<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, msr: u32, value: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteMsr(this, core::mem::transmute_copy(&msr), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn ReadBusData<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteBusData<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WriteBusData(this, core::mem::transmute_copy(&busdatatype), core::mem::transmute_copy(&busnumber), core::mem::transmute_copy(&slotnumber), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn CheckLowMemory<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::CheckLowMemory(this).into()
            }
        }
        unsafe extern "system" fn ReadDebuggerData<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadDebuggerData(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn ReadProcessorSystemData<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, index: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadProcessorSystemData(this, core::mem::transmute_copy(&processor), core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn VirtualToPhysical<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, physical: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::VirtualToPhysical(this, core::mem::transmute_copy(&r#virtual)) {
                    Ok(ok__) => {
                        physical.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetVirtualTranslationPhysicalOffsets<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#virtual: u64, offsets: *mut u64, offsetssize: u32, levels: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::GetVirtualTranslationPhysicalOffsets(this, core::mem::transmute_copy(&r#virtual), core::mem::transmute_copy(&offsets), core::mem::transmute_copy(&offsetssize), core::mem::transmute_copy(&levels)).into()
            }
        }
        unsafe extern "system" fn ReadHandleData<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, datatype: u32, buffer: *mut core::ffi::c_void, buffersize: u32, datasize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadHandleData(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&datatype), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&datasize)).into()
            }
        }
        unsafe extern "system" fn FillVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::FillVirtual(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn FillPhysical<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u64, size: u32, pattern: *const core::ffi::c_void, patternsize: u32, filled: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::FillPhysical(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&size), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&filled)).into()
            }
        }
        unsafe extern "system" fn QueryVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, info: *mut super::super::super::Memory::MEMORY_BASIC_INFORMATION64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::QueryVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&info)).into()
            }
        }
        unsafe extern "system" fn ReadImageNtHeaders<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, imagebase: u64, headers: *mut super::IMAGE_NT_HEADERS64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadImageNtHeaders(this, core::mem::transmute_copy(&imagebase), core::mem::transmute_copy(&headers)).into()
            }
        }
        unsafe extern "system" fn ReadTagged<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadTagged(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&totalsize)).into()
            }
        }
        unsafe extern "system" fn StartEnumTagged<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::StartEnumTagged(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextTagged<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, tag: *mut windows_core::GUID, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::GetNextTagged(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&tag), core::mem::transmute_copy(&size)).into()
            }
        }
        unsafe extern "system" fn EndEnumTagged<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::EndEnumTagged(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn GetOffsetInformation<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::GetOffsetInformation(this, core::mem::transmute_copy(&space), core::mem::transmute_copy(&which), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&infosize)).into()
            }
        }
        unsafe extern "system" fn GetNextDifferentlyValidOffsetVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, nextoffset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::GetNextDifferentlyValidOffsetVirtual(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        nextoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValidRegionVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, validbase: *mut u64, validsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::GetValidRegionVirtual(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute_copy(&validbase), core::mem::transmute_copy(&validsize)).into()
            }
        }
        unsafe extern "system" fn SearchVirtual2<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugDataSpaces4_Impl::SearchVirtual2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&length), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&pattern), core::mem::transmute_copy(&patternsize), core::mem::transmute_copy(&patterngranularity)) {
                    Ok(ok__) => {
                        matchoffset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadMultiByteStringVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, maxbytes: u32, buffer: windows_core::PSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadMultiByteStringVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&maxbytes), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringbytes)).into()
            }
        }
        unsafe extern "system" fn ReadMultiByteStringVirtualWide<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, maxbytes: u32, codepage: u32, buffer: windows_core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadMultiByteStringVirtualWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&maxbytes), core::mem::transmute_copy(&codepage), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringbytes)).into()
            }
        }
        unsafe extern "system" fn ReadUnicodeStringVirtual<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, maxbytes: u32, codepage: u32, buffer: windows_core::PSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadUnicodeStringVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&maxbytes), core::mem::transmute_copy(&codepage), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringbytes)).into()
            }
        }
        unsafe extern "system" fn ReadUnicodeStringVirtualWide<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, maxbytes: u32, buffer: windows_core::PWSTR, buffersize: u32, stringbytes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadUnicodeStringVirtualWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&maxbytes), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringbytes)).into()
            }
        }
        unsafe extern "system" fn ReadPhysical2<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::ReadPhysical2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WritePhysical2<Identity: IDebugDataSpaces4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugDataSpaces4_Impl::WritePhysical2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadVirtual: ReadVirtual::<Identity, OFFSET>,
            WriteVirtual: WriteVirtual::<Identity, OFFSET>,
            SearchVirtual: SearchVirtual::<Identity, OFFSET>,
            ReadVirtualUncached: ReadVirtualUncached::<Identity, OFFSET>,
            WriteVirtualUncached: WriteVirtualUncached::<Identity, OFFSET>,
            ReadPointersVirtual: ReadPointersVirtual::<Identity, OFFSET>,
            WritePointersVirtual: WritePointersVirtual::<Identity, OFFSET>,
            ReadPhysical: ReadPhysical::<Identity, OFFSET>,
            WritePhysical: WritePhysical::<Identity, OFFSET>,
            ReadControl: ReadControl::<Identity, OFFSET>,
            WriteControl: WriteControl::<Identity, OFFSET>,
            ReadIo: ReadIo::<Identity, OFFSET>,
            WriteIo: WriteIo::<Identity, OFFSET>,
            ReadMsr: ReadMsr::<Identity, OFFSET>,
            WriteMsr: WriteMsr::<Identity, OFFSET>,
            ReadBusData: ReadBusData::<Identity, OFFSET>,
            WriteBusData: WriteBusData::<Identity, OFFSET>,
            CheckLowMemory: CheckLowMemory::<Identity, OFFSET>,
            ReadDebuggerData: ReadDebuggerData::<Identity, OFFSET>,
            ReadProcessorSystemData: ReadProcessorSystemData::<Identity, OFFSET>,
            VirtualToPhysical: VirtualToPhysical::<Identity, OFFSET>,
            GetVirtualTranslationPhysicalOffsets: GetVirtualTranslationPhysicalOffsets::<Identity, OFFSET>,
            ReadHandleData: ReadHandleData::<Identity, OFFSET>,
            FillVirtual: FillVirtual::<Identity, OFFSET>,
            FillPhysical: FillPhysical::<Identity, OFFSET>,
            QueryVirtual: QueryVirtual::<Identity, OFFSET>,
            ReadImageNtHeaders: ReadImageNtHeaders::<Identity, OFFSET>,
            ReadTagged: ReadTagged::<Identity, OFFSET>,
            StartEnumTagged: StartEnumTagged::<Identity, OFFSET>,
            GetNextTagged: GetNextTagged::<Identity, OFFSET>,
            EndEnumTagged: EndEnumTagged::<Identity, OFFSET>,
            GetOffsetInformation: GetOffsetInformation::<Identity, OFFSET>,
            GetNextDifferentlyValidOffsetVirtual: GetNextDifferentlyValidOffsetVirtual::<Identity, OFFSET>,
            GetValidRegionVirtual: GetValidRegionVirtual::<Identity, OFFSET>,
            SearchVirtual2: SearchVirtual2::<Identity, OFFSET>,
            ReadMultiByteStringVirtual: ReadMultiByteStringVirtual::<Identity, OFFSET>,
            ReadMultiByteStringVirtualWide: ReadMultiByteStringVirtualWide::<Identity, OFFSET>,
            ReadUnicodeStringVirtual: ReadUnicodeStringVirtual::<Identity, OFFSET>,
            ReadUnicodeStringVirtualWide: ReadUnicodeStringVirtualWide::<Identity, OFFSET>,
            ReadPhysical2: ReadPhysical2::<Identity, OFFSET>,
            WritePhysical2: WritePhysical2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugDataSpaces4 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Memory", feature = "Win32_System_SystemInformation"))]
impl windows_core::RuntimeName for IDebugDataSpaces4 {}
windows_core::imp::define_interface!(IDebugEventCallbacks, IDebugEventCallbacks_Vtbl, 0x337be28b_5036_4d72_b6bf_c45fbb9f2eaa);
windows_core::imp::interface_hierarchy!(IDebugEventCallbacks, windows_core::IUnknown);
impl IDebugEventCallbacks {
    pub unsafe fn GetInterestMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterestMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint>,
    {
        unsafe { (windows_core::Interface::vtable(self).Breakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitThread)(windows_core::Interface::as_raw(self), exitcode).ok() }
    }
    pub unsafe fn CreateProcessA<P4, P5>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P4, imagename: P5, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> windows_core::Result<()>
    where
        P4: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.param().abi(), imagename.param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok() }
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitProcess)(windows_core::Interface::as_raw(self), exitcode).ok() }
    }
    pub unsafe fn LoadModule<P3, P4>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P3, imagename: P4, checksum: u32, timedatestamp: u32) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCSTR>,
        P4: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LoadModule)(windows_core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.param().abi(), imagename.param().abi(), checksum, timedatestamp).ok() }
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnloadModule)(windows_core::Interface::as_raw(self), imagebasename.param().abi(), baseoffset).ok() }
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ChangeSymbolState)(windows_core::Interface::as_raw(self), flags, argument).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventCallbacks_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Exception: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::EXCEPTION_RECORD64, u32) -> windows_core::HRESULT,
    pub CreateThread: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64) -> windows_core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32, u64, u64, u64) -> windows_core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, windows_core::PCSTR, windows_core::PCSTR, u32, u32) -> windows_core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u64) -> windows_core::HRESULT,
    pub SystemError: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
}
pub trait IDebugEventCallbacks_Impl: windows_core::IUnknownImpl {
    fn GetInterestMask(&self) -> windows_core::Result<u32>;
    fn Breakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint>) -> windows_core::Result<()>;
    fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::Result<()>;
    fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> windows_core::Result<()>;
    fn ExitThread(&self, exitcode: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, 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::Result<()>;
    fn ExitProcess(&self, exitcode: u32) -> windows_core::Result<()>;
    fn LoadModule(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: &windows_core::PCSTR, imagename: &windows_core::PCSTR, checksum: u32, timedatestamp: u32) -> windows_core::Result<()>;
    fn UnloadModule(&self, imagebasename: &windows_core::PCSTR, baseoffset: u64) -> windows_core::Result<()>;
    fn SystemError(&self, error: u32, level: u32) -> windows_core::Result<()>;
    fn SessionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
    fn ChangeEngineState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
    fn ChangeSymbolState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
}
impl IDebugEventCallbacks_Vtbl {
    pub const fn new<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterestMask<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugEventCallbacks_Impl::GetInterestMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Breakpoint<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::Breakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn Exception<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::Exception(this, core::mem::transmute_copy(&exception), core::mem::transmute_copy(&firstchance)).into()
            }
        }
        unsafe extern "system" fn CreateThread<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::CreateThread(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&dataoffset), core::mem::transmute_copy(&startoffset)).into()
            }
        }
        unsafe extern "system" fn ExitThread<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::ExitThread(this, core::mem::transmute_copy(&exitcode)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::CreateProcessA(this, core::mem::transmute_copy(&imagefilehandle), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&modulesize), core::mem::transmute(&modulename), core::mem::transmute(&imagename), core::mem::transmute_copy(&checksum), core::mem::transmute_copy(&timedatestamp), core::mem::transmute_copy(&initialthreadhandle), core::mem::transmute_copy(&threaddataoffset), core::mem::transmute_copy(&startoffset)).into()
            }
        }
        unsafe extern "system" fn ExitProcess<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::ExitProcess(this, core::mem::transmute_copy(&exitcode)).into()
            }
        }
        unsafe extern "system" fn LoadModule<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::LoadModule(this, core::mem::transmute_copy(&imagefilehandle), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&modulesize), core::mem::transmute(&modulename), core::mem::transmute(&imagename), core::mem::transmute_copy(&checksum), core::mem::transmute_copy(&timedatestamp)).into()
            }
        }
        unsafe extern "system" fn UnloadModule<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, imagebasename: windows_core::PCSTR, baseoffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::UnloadModule(this, core::mem::transmute(&imagebasename), core::mem::transmute_copy(&baseoffset)).into()
            }
        }
        unsafe extern "system" fn SystemError<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, error: u32, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::SystemError(this, core::mem::transmute_copy(&error), core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn SessionStatus<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::SessionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn ChangeDebuggeeState<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::ChangeDebuggeeState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        unsafe extern "system" fn ChangeEngineState<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::ChangeEngineState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        unsafe extern "system" fn ChangeSymbolState<Identity: IDebugEventCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacks_Impl::ChangeSymbolState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterestMask: GetInterestMask::<Identity, OFFSET>,
            Breakpoint: Breakpoint::<Identity, OFFSET>,
            Exception: Exception::<Identity, OFFSET>,
            CreateThread: CreateThread::<Identity, OFFSET>,
            ExitThread: ExitThread::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            ExitProcess: ExitProcess::<Identity, OFFSET>,
            LoadModule: LoadModule::<Identity, OFFSET>,
            UnloadModule: UnloadModule::<Identity, OFFSET>,
            SystemError: SystemError::<Identity, OFFSET>,
            SessionStatus: SessionStatus::<Identity, OFFSET>,
            ChangeDebuggeeState: ChangeDebuggeeState::<Identity, OFFSET>,
            ChangeEngineState: ChangeEngineState::<Identity, OFFSET>,
            ChangeSymbolState: ChangeSymbolState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugEventCallbacks as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugEventCallbacks {}
windows_core::imp::define_interface!(IDebugEventCallbacksWide, IDebugEventCallbacksWide_Vtbl, 0x0690e046_9c23_45ac_a04f_987ac29ad0d3);
windows_core::imp::interface_hierarchy!(IDebugEventCallbacksWide, windows_core::IUnknown);
impl IDebugEventCallbacksWide {
    pub unsafe fn GetInterestMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterestMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).Breakpoint)(windows_core::Interface::as_raw(self), bp.param().abi()).ok() }
    }
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitThread)(windows_core::Interface::as_raw(self), exitcode).ok() }
    }
    pub unsafe fn CreateProcessA<P4, P5>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P4, imagename: P5, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64) -> windows_core::Result<()>
    where
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.param().abi(), imagename.param().abi(), checksum, timedatestamp, initialthreadhandle, threaddataoffset, startoffset).ok() }
    }
    pub unsafe fn ExitProcess(&self, exitcode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitProcess)(windows_core::Interface::as_raw(self), exitcode).ok() }
    }
    pub unsafe fn LoadModule<P3, P4>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P3, imagename: P4, checksum: u32, timedatestamp: u32) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LoadModule)(windows_core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.param().abi(), imagename.param().abi(), checksum, timedatestamp).ok() }
    }
    pub unsafe fn UnloadModule<P0>(&self, imagebasename: P0, baseoffset: u64) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnloadModule)(windows_core::Interface::as_raw(self), imagebasename.param().abi(), baseoffset).ok() }
    }
    pub unsafe fn SystemError(&self, error: u32, level: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ChangeSymbolState)(windows_core::Interface::as_raw(self), flags, argument).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventCallbacksWide_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Exception: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::EXCEPTION_RECORD64, u32) -> windows_core::HRESULT,
    pub CreateThread: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64) -> windows_core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32, u64, u64, u64) -> windows_core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32) -> windows_core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64) -> windows_core::HRESULT,
    pub SystemError: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
}
pub trait IDebugEventCallbacksWide_Impl: windows_core::IUnknownImpl {
    fn GetInterestMask(&self) -> windows_core::Result<u32>;
    fn Breakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>) -> windows_core::Result<()>;
    fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::Result<()>;
    fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64) -> windows_core::Result<()>;
    fn ExitThread(&self, exitcode: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, 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::Result<()>;
    fn ExitProcess(&self, exitcode: u32) -> windows_core::Result<()>;
    fn LoadModule(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: &windows_core::PCWSTR, imagename: &windows_core::PCWSTR, checksum: u32, timedatestamp: u32) -> windows_core::Result<()>;
    fn UnloadModule(&self, imagebasename: &windows_core::PCWSTR, baseoffset: u64) -> windows_core::Result<()>;
    fn SystemError(&self, error: u32, level: u32) -> windows_core::Result<()>;
    fn SessionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn ChangeDebuggeeState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
    fn ChangeEngineState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
    fn ChangeSymbolState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
}
impl IDebugEventCallbacksWide_Vtbl {
    pub const fn new<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterestMask<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugEventCallbacksWide_Impl::GetInterestMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Breakpoint<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::Breakpoint(this, core::mem::transmute_copy(&bp)).into()
            }
        }
        unsafe extern "system" fn Exception<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::Exception(this, core::mem::transmute_copy(&exception), core::mem::transmute_copy(&firstchance)).into()
            }
        }
        unsafe extern "system" fn CreateThread<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::CreateThread(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&dataoffset), core::mem::transmute_copy(&startoffset)).into()
            }
        }
        unsafe extern "system" fn ExitThread<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::ExitThread(this, core::mem::transmute_copy(&exitcode)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::CreateProcessA(this, core::mem::transmute_copy(&imagefilehandle), core::mem::transmute_copy(&handle), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&modulesize), core::mem::transmute(&modulename), core::mem::transmute(&imagename), core::mem::transmute_copy(&checksum), core::mem::transmute_copy(&timedatestamp), core::mem::transmute_copy(&initialthreadhandle), core::mem::transmute_copy(&threaddataoffset), core::mem::transmute_copy(&startoffset)).into()
            }
        }
        unsafe extern "system" fn ExitProcess<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::ExitProcess(this, core::mem::transmute_copy(&exitcode)).into()
            }
        }
        unsafe extern "system" fn LoadModule<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::LoadModule(this, core::mem::transmute_copy(&imagefilehandle), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&modulesize), core::mem::transmute(&modulename), core::mem::transmute(&imagename), core::mem::transmute_copy(&checksum), core::mem::transmute_copy(&timedatestamp)).into()
            }
        }
        unsafe extern "system" fn UnloadModule<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, imagebasename: windows_core::PCWSTR, baseoffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::UnloadModule(this, core::mem::transmute(&imagebasename), core::mem::transmute_copy(&baseoffset)).into()
            }
        }
        unsafe extern "system" fn SystemError<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, error: u32, level: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::SystemError(this, core::mem::transmute_copy(&error), core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn SessionStatus<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::SessionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn ChangeDebuggeeState<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::ChangeDebuggeeState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        unsafe extern "system" fn ChangeEngineState<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::ChangeEngineState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        unsafe extern "system" fn ChangeSymbolState<Identity: IDebugEventCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventCallbacksWide_Impl::ChangeSymbolState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterestMask: GetInterestMask::<Identity, OFFSET>,
            Breakpoint: Breakpoint::<Identity, OFFSET>,
            Exception: Exception::<Identity, OFFSET>,
            CreateThread: CreateThread::<Identity, OFFSET>,
            ExitThread: ExitThread::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            ExitProcess: ExitProcess::<Identity, OFFSET>,
            LoadModule: LoadModule::<Identity, OFFSET>,
            UnloadModule: UnloadModule::<Identity, OFFSET>,
            SystemError: SystemError::<Identity, OFFSET>,
            SessionStatus: SessionStatus::<Identity, OFFSET>,
            ChangeDebuggeeState: ChangeDebuggeeState::<Identity, OFFSET>,
            ChangeEngineState: ChangeEngineState::<Identity, OFFSET>,
            ChangeSymbolState: ChangeSymbolState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugEventCallbacksWide as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugEventCallbacksWide {}
windows_core::imp::define_interface!(IDebugEventContextCallbacks, IDebugEventContextCallbacks_Vtbl, 0x61a4905b_23f9_4247_b3c5_53d087529ab7);
windows_core::imp::interface_hierarchy!(IDebugEventContextCallbacks, windows_core::IUnknown);
impl IDebugEventContextCallbacks {
    pub unsafe fn GetInterestMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterestMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Breakpoint<P0>(&self, bp: P0, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugBreakpoint2>,
    {
        unsafe { (windows_core::Interface::vtable(self).Breakpoint)(windows_core::Interface::as_raw(self), bp.param().abi(), context, contextsize).ok() }
    }
    pub unsafe fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitThread)(windows_core::Interface::as_raw(self), exitcode, context, contextsize).ok() }
    }
    pub unsafe fn CreateProcessA<P4, P5>(&self, imagefilehandle: u64, handle: u64, baseoffset: u64, modulesize: u32, modulename: P4, imagename: P5, checksum: u32, timedatestamp: u32, initialthreadhandle: u64, threaddataoffset: u64, startoffset: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>
    where
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateProcessA)(windows_core::Interface::as_raw(self), imagefilehandle, handle, baseoffset, modulesize, modulename.param().abi(), imagename.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<()> {
        unsafe { (windows_core::Interface::vtable(self).ExitProcess)(windows_core::Interface::as_raw(self), exitcode, context, contextsize).ok() }
    }
    pub unsafe fn LoadModule<P3, P4>(&self, imagefilehandle: u64, baseoffset: u64, modulesize: u32, modulename: P3, imagename: P4, checksum: u32, timedatestamp: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LoadModule)(windows_core::Interface::as_raw(self), imagefilehandle, baseoffset, modulesize, modulename.param().abi(), imagename.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::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UnloadModule)(windows_core::Interface::as_raw(self), imagebasename.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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).ChangeSymbolState)(windows_core::Interface::as_raw(self), flags, argument).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugEventContextCallbacks_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInterestMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Breakpoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Exception: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::EXCEPTION_RECORD64, u32, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub CreateThread: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitThread: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub CreateProcessA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32, u64, u64, u64, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ExitProcess: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub LoadModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32, u32, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub UnloadModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SystemError: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SessionStatus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ChangeDebuggeeState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ChangeEngineState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ChangeSymbolState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
}
pub trait IDebugEventContextCallbacks_Impl: windows_core::IUnknownImpl {
    fn GetInterestMask(&self) -> windows_core::Result<u32>;
    fn Breakpoint(&self, bp: windows_core::Ref<'_, IDebugBreakpoint2>, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn Exception(&self, exception: *const super::EXCEPTION_RECORD64, firstchance: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn CreateThread(&self, handle: u64, dataoffset: u64, startoffset: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn ExitThread(&self, exitcode: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn CreateProcessA(&self, 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::Result<()>;
    fn ExitProcess(&self, exitcode: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn LoadModule(&self, 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::Result<()>;
    fn UnloadModule(&self, imagebasename: &windows_core::PCWSTR, baseoffset: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SystemError(&self, error: u32, level: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn SessionStatus(&self, status: u32) -> windows_core::Result<()>;
    fn ChangeDebuggeeState(&self, flags: u32, argument: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn ChangeEngineState(&self, flags: u32, argument: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::Result<()>;
    fn ChangeSymbolState(&self, flags: u32, argument: u64) -> windows_core::Result<()>;
}
impl IDebugEventContextCallbacks_Vtbl {
    pub const fn new<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInterestMask<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugEventContextCallbacks_Impl::GetInterestMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Breakpoint<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bp: *mut core::ffi::c_void, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::Breakpoint(this, core::mem::transmute_copy(&bp), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn Exception<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exception: *const super::EXCEPTION_RECORD64, firstchance: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::Exception(this, core::mem::transmute_copy(&exception), core::mem::transmute_copy(&firstchance), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn CreateThread<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, dataoffset: u64, startoffset: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::CreateThread(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&dataoffset), core::mem::transmute_copy(&startoffset), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn ExitThread<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::ExitThread(this, core::mem::transmute_copy(&exitcode), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn CreateProcessA<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::CreateProcessA(
                    this,
                    core::mem::transmute_copy(&imagefilehandle),
                    core::mem::transmute_copy(&handle),
                    core::mem::transmute_copy(&baseoffset),
                    core::mem::transmute_copy(&modulesize),
                    core::mem::transmute(&modulename),
                    core::mem::transmute(&imagename),
                    core::mem::transmute_copy(&checksum),
                    core::mem::transmute_copy(&timedatestamp),
                    core::mem::transmute_copy(&initialthreadhandle),
                    core::mem::transmute_copy(&threaddataoffset),
                    core::mem::transmute_copy(&startoffset),
                    core::mem::transmute_copy(&context),
                    core::mem::transmute_copy(&contextsize),
                )
                .into()
            }
        }
        unsafe extern "system" fn ExitProcess<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, exitcode: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::ExitProcess(this, core::mem::transmute_copy(&exitcode), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn LoadModule<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::LoadModule(this, core::mem::transmute_copy(&imagefilehandle), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&modulesize), core::mem::transmute(&modulename), core::mem::transmute(&imagename), core::mem::transmute_copy(&checksum), core::mem::transmute_copy(&timedatestamp), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn UnloadModule<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, imagebasename: windows_core::PCWSTR, baseoffset: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::UnloadModule(this, core::mem::transmute(&imagebasename), core::mem::transmute_copy(&baseoffset), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SystemError<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, error: u32, level: u32, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::SystemError(this, core::mem::transmute_copy(&error), core::mem::transmute_copy(&level), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn SessionStatus<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, status: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::SessionStatus(this, core::mem::transmute_copy(&status)).into()
            }
        }
        unsafe extern "system" fn ChangeDebuggeeState<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::ChangeDebuggeeState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn ChangeEngineState<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64, context: *const core::ffi::c_void, contextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::ChangeEngineState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument), core::mem::transmute_copy(&context), core::mem::transmute_copy(&contextsize)).into()
            }
        }
        unsafe extern "system" fn ChangeSymbolState<Identity: IDebugEventContextCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, argument: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugEventContextCallbacks_Impl::ChangeSymbolState(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&argument)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInterestMask: GetInterestMask::<Identity, OFFSET>,
            Breakpoint: Breakpoint::<Identity, OFFSET>,
            Exception: Exception::<Identity, OFFSET>,
            CreateThread: CreateThread::<Identity, OFFSET>,
            ExitThread: ExitThread::<Identity, OFFSET>,
            CreateProcessA: CreateProcessA::<Identity, OFFSET>,
            ExitProcess: ExitProcess::<Identity, OFFSET>,
            LoadModule: LoadModule::<Identity, OFFSET>,
            UnloadModule: UnloadModule::<Identity, OFFSET>,
            SystemError: SystemError::<Identity, OFFSET>,
            SessionStatus: SessionStatus::<Identity, OFFSET>,
            ChangeDebuggeeState: ChangeDebuggeeState::<Identity, OFFSET>,
            ChangeEngineState: ChangeEngineState::<Identity, OFFSET>,
            ChangeSymbolState: ChangeSymbolState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugEventContextCallbacks as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugEventContextCallbacks {}
windows_core::imp::define_interface!(IDebugFAEntryTags, IDebugFAEntryTags_Vtbl);
impl IDebugFAEntryTags {
    pub unsafe fn GetType(&self, tag: DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE {
        unsafe { (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<()> {
        unsafe { (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: Option<windows_core::PSTR>, namesize: Option<*mut u32>, description: Option<windows_core::PSTR>, descsize: Option<*mut u32>, flags: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProperties)(windows_core::Interface::as_raw(self), tag, name.unwrap_or(core::mem::zeroed()) as _, namesize.unwrap_or(core::mem::zeroed()) as _, description.unwrap_or(core::mem::zeroed()) as _, descsize.unwrap_or(core::mem::zeroed()) as _, flags.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetProperties<P1, P2>(&self, tag: DEBUG_FLR_PARAM_TYPE, name: P1, description: P2, flags: Option<u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProperties)(windows_core::Interface::as_raw(self), tag, name.param().abi(), description.param().abi(), flags.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTagByName<P0, P1>(&self, pluginid: P0, tagname: P1) -> windows_core::Result<DEBUG_FLR_PARAM_TYPE>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTagByName)(windows_core::Interface::as_raw(self), pluginid.param().abi(), tagname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsValidTagToSet(&self, tag: DEBUG_FLR_PARAM_TYPE) -> windows_core::BOOL {
        unsafe { (windows_core::Interface::vtable(self).IsValidTagToSet)(windows_core::Interface::as_raw(self), tag) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFAEntryTags_Vtbl {
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE,
    pub SetType: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, FA_ENTRY_TYPE) -> windows_core::HRESULT,
    pub GetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PSTR, *mut u32, windows_core::PSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub SetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetTagByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, windows_core::PCSTR, *mut DEBUG_FLR_PARAM_TYPE) -> windows_core::HRESULT,
    pub IsValidTagToSet: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE) -> windows_core::BOOL,
}
pub trait IDebugFAEntryTags_Impl {
    fn GetType(&self, tag: DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE;
    fn SetType(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE) -> windows_core::Result<()>;
    fn GetProperties(&self, tag: DEBUG_FLR_PARAM_TYPE, name: windows_core::PSTR, namesize: *mut u32, description: windows_core::PSTR, descsize: *mut u32, flags: *mut u32) -> windows_core::Result<()>;
    fn SetProperties(&self, tag: DEBUG_FLR_PARAM_TYPE, name: &windows_core::PCSTR, description: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn GetTagByName(&self, pluginid: &windows_core::PCSTR, tagname: &windows_core::PCSTR) -> windows_core::Result<DEBUG_FLR_PARAM_TYPE>;
    fn IsValidTagToSet(&self, tag: DEBUG_FLR_PARAM_TYPE) -> windows_core::BOOL;
}
impl IDebugFAEntryTags_Vtbl {
    pub const fn new<Identity: IDebugFAEntryTags_Impl>() -> Self {
        unsafe extern "system" fn GetType<Identity: IDebugFAEntryTags_Impl>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> FA_ENTRY_TYPE {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                IDebugFAEntryTags_Impl::GetType(this, core::mem::transmute_copy(&tag))
            }
        }
        unsafe extern "system" fn SetType<Identity: IDebugFAEntryTags_Impl>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                IDebugFAEntryTags_Impl::SetType(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&entrytype)).into()
            }
        }
        unsafe extern "system" fn GetProperties<Identity: IDebugFAEntryTags_Impl>(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 {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                IDebugFAEntryTags_Impl::GetProperties(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&name), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&description), core::mem::transmute_copy(&descsize), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn SetProperties<Identity: IDebugFAEntryTags_Impl>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, name: windows_core::PCSTR, description: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                IDebugFAEntryTags_Impl::SetProperties(this, core::mem::transmute_copy(&tag), core::mem::transmute(&name), core::mem::transmute(&description), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetTagByName<Identity: IDebugFAEntryTags_Impl>(this: *mut core::ffi::c_void, pluginid: windows_core::PCSTR, tagname: windows_core::PCSTR, tag: *mut DEBUG_FLR_PARAM_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                match IDebugFAEntryTags_Impl::GetTagByName(this, core::mem::transmute(&pluginid), core::mem::transmute(&tagname)) {
                    Ok(ok__) => {
                        tag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsValidTagToSet<Identity: IDebugFAEntryTags_Impl>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> windows_core::BOOL {
            unsafe {
                let this = (this as *mut *mut core::ffi::c_void) as *const windows_core::ScopedHeap;
                let this = &*((*this).this as *const Identity);
                IDebugFAEntryTags_Impl::IsValidTagToSet(this, core::mem::transmute_copy(&tag))
            }
        }
        Self {
            GetType: GetType::<Identity>,
            SetType: SetType::<Identity>,
            GetProperties: GetProperties::<Identity>,
            SetProperties: SetProperties::<Identity>,
            GetTagByName: GetTagByName::<Identity>,
            IsValidTagToSet: IsValidTagToSet::<Identity>,
        }
    }
}
struct IDebugFAEntryTags_ImplVtbl<T: IDebugFAEntryTags_Impl>(core::marker::PhantomData<T>);
impl<T: IDebugFAEntryTags_Impl> IDebugFAEntryTags_ImplVtbl<T> {
    const VTABLE: IDebugFAEntryTags_Vtbl = IDebugFAEntryTags_Vtbl::new::<T>();
}
impl IDebugFAEntryTags {
    pub fn new<'a, T: IDebugFAEntryTags_Impl>(this: &'a T) -> windows_core::ScopedInterface<'a, Self> {
        let this = windows_core::ScopedHeap { vtable: &IDebugFAEntryTags_ImplVtbl::<T>::VTABLE as *const _ as *const _, this: this as *const _ as *const _ };
        let this = core::mem::ManuallyDrop::new(windows_core::imp::Box::new(this));
        unsafe { windows_core::ScopedInterface::new(core::mem::transmute(&this.vtable)) }
    }
}
windows_core::imp::define_interface!(IDebugFailureAnalysis, IDebugFailureAnalysis_Vtbl, 0xed0de363_451f_4943_820c_62dccdfa7e6d);
windows_core::imp::interface_hierarchy!(IDebugFailureAnalysis, windows_core::IUnknown);
impl IDebugFailureAnalysis {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).GetFailureClass)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        unsafe { (windows_core::Interface::vtable(self).GetFailureType)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), entry as _, tag, tagmask) }
    }
    pub unsafe fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &mut [u8]) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetString)(windows_core::Interface::as_raw(self), tag, core::mem::transmute(str.as_ptr()), str.len().try_into().unwrap()) }
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetBuffer)(windows_core::Interface::as_raw(self), tag, buf as _, size) }
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong64)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn NextEntry(&self, entry: Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).NextEntry)(windows_core::Interface::as_raw(self), entry.unwrap_or(core::mem::zeroed()) as _) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(*mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FA_ENTRY, DEBUG_FLR_PARAM_TYPE, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PSTR, u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const FA_ENTRY) -> *mut FA_ENTRY,
}
pub trait IDebugFailureAnalysis_Impl: windows_core::IUnknownImpl {
    fn GetFailureClass(&self) -> u32;
    fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE;
    fn GetFailureCode(&self) -> u32;
    fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetNext(&self, entry: *mut FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY;
    fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY;
    fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY;
    fn NextEntry(&self, entry: *const FA_ENTRY) -> *mut FA_ENTRY;
}
impl IDebugFailureAnalysis_Vtbl {
    pub const fn new<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFailureClass<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetFailureClass(this)
            }
        }
        unsafe extern "system" fn GetFailureType<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetFailureType(this)
            }
        }
        unsafe extern "system" fn GetFailureCode<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetFailureCode(this)
            }
        }
        unsafe extern "system" fn Get<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::Get(this, core::mem::transmute_copy(&tag))
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *mut FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetNext(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&tag), core::mem::transmute_copy(&tagmask))
            }
        }
        unsafe extern "system" fn GetString<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetString(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&str), core::mem::transmute_copy(&maxsize))
            }
        }
        unsafe extern "system" fn GetBuffer<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn GetUlong<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn GetUlong64<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::GetUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn NextEntry<Identity: IDebugFailureAnalysis_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis_Impl::NextEntry(this, core::mem::transmute_copy(&entry))
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFailureClass: GetFailureClass::<Identity, OFFSET>,
            GetFailureType: GetFailureType::<Identity, OFFSET>,
            GetFailureCode: GetFailureCode::<Identity, OFFSET>,
            Get: Get::<Identity, OFFSET>,
            GetNext: GetNext::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetBuffer: GetBuffer::<Identity, OFFSET>,
            GetUlong: GetUlong::<Identity, OFFSET>,
            GetUlong64: GetUlong64::<Identity, OFFSET>,
            NextEntry: NextEntry::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugFailureAnalysis as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugFailureAnalysis {}
windows_core::imp::define_interface!(IDebugFailureAnalysis2, IDebugFailureAnalysis2_Vtbl, 0xea15c288_8226_4b70_acf6_0be6b189e3ad);
windows_core::imp::interface_hierarchy!(IDebugFailureAnalysis2, windows_core::IUnknown);
impl IDebugFailureAnalysis2 {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).GetFailureClass)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        unsafe { (windows_core::Interface::vtable(self).GetFailureType)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (windows_core::Interface::vtable(self).GetString)(windows_core::Interface::as_raw(self), tag, core::mem::transmute(str.as_ptr()), str.len().try_into().unwrap()) }
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetBuffer)(windows_core::Interface::as_raw(self), tag, buf as _, size) }
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong64)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn NextEntry(&self, entry: Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).NextEntry)(windows_core::Interface::as_raw(self), entry.unwrap_or(core::mem::zeroed()) as _) }
    }
    pub unsafe fn SetString<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetString)(windows_core::Interface::as_raw(self), tag, str.param().abi()) }
    }
    pub unsafe fn SetExtensionCommand<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExtensionCommand)(windows_core::Interface::as_raw(self), tag, extension.param().abi()) }
    }
    pub unsafe fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (windows_core::Interface::vtable(self).SetBuffer)(windows_core::Interface::as_raw(self), tag, entrytype, buf, size) }
    }
    pub unsafe fn AddString<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddString)(windows_core::Interface::as_raw(self), tag, str.param().abi()) }
    }
    pub unsafe fn AddExtensionCommand<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddExtensionCommand)(windows_core::Interface::as_raw(self), tag, extension.param().abi()) }
    }
    pub unsafe fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDebugFATagControl)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAnalysisXml)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddStructuredAnalysisData<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IDebugFailureAnalysis2>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddStructuredAnalysisData)(windows_core::Interface::as_raw(self), tag, analysis.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(*mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *const FA_ENTRY, DEBUG_FLR_PARAM_TYPE, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PSTR, u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const FA_ENTRY) -> *mut FA_ENTRY,
    pub SetString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub SetExtensionCommand: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub SetUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u32) -> *mut FA_ENTRY,
    pub SetUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u64) -> *mut FA_ENTRY,
    pub SetBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, FA_ENTRY_TYPE, *const core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub AddString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub AddExtensionCommand: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub AddUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u32) -> *mut FA_ENTRY,
    pub AddUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u64) -> *mut FA_ENTRY,
    pub AddBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, FA_ENTRY_TYPE, *const core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub GetDebugFATagControl: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
pub trait IDebugFailureAnalysis2_Impl: windows_core::IUnknownImpl {
    fn GetFailureClass(&self) -> u32;
    fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE;
    fn GetFailureCode(&self) -> u32;
    fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetNext(&self, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY;
    fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY;
    fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY;
    fn NextEntry(&self, entry: *const FA_ENTRY) -> *mut FA_ENTRY;
    fn SetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn SetExtensionCommand(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY;
    fn SetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY;
    fn SetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn AddString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn AddExtensionCommand(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY;
    fn AddUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY;
    fn AddBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn GetDebugFATagControl(&self) -> windows_core::Result<IDebugFAEntryTags>;
    fn GetAnalysisXml(&self) -> windows_core::Result<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement>;
    fn AddStructuredAnalysisData(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: windows_core::Ref<'_, IDebugFailureAnalysis2>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
impl IDebugFailureAnalysis2_Vtbl {
    pub const fn new<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFailureClass<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetFailureClass(this)
            }
        }
        unsafe extern "system" fn GetFailureType<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetFailureType(this)
            }
        }
        unsafe extern "system" fn GetFailureCode<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetFailureCode(this)
            }
        }
        unsafe extern "system" fn Get<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::Get(this, core::mem::transmute_copy(&tag))
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetNext(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&tag), core::mem::transmute_copy(&tagmask))
            }
        }
        unsafe extern "system" fn GetString<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetString(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&str), core::mem::transmute_copy(&maxsize))
            }
        }
        unsafe extern "system" fn GetBuffer<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn GetUlong<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn GetUlong64<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::GetUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn NextEntry<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::NextEntry(this, core::mem::transmute_copy(&entry))
            }
        }
        unsafe extern "system" fn SetString<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::SetString(this, core::mem::transmute_copy(&tag), core::mem::transmute(&str))
            }
        }
        unsafe extern "system" fn SetExtensionCommand<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::SetExtensionCommand(this, core::mem::transmute_copy(&tag), core::mem::transmute(&extension))
            }
        }
        unsafe extern "system" fn SetUlong<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::SetUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn SetUlong64<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::SetUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn SetBuffer<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::SetBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&entrytype), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn AddString<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddString(this, core::mem::transmute_copy(&tag), core::mem::transmute(&str))
            }
        }
        unsafe extern "system" fn AddExtensionCommand<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddExtensionCommand(this, core::mem::transmute_copy(&tag), core::mem::transmute(&extension))
            }
        }
        unsafe extern "system" fn AddUlong<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn AddUlong64<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn AddBuffer<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&entrytype), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn GetDebugFATagControl<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fatagcontrol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis2_Impl::GetDebugFATagControl(this) {
                    Ok(ok__) => {
                        fatagcontrol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAnalysisXml<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppxmldomelement: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis2_Impl::GetAnalysisXml(this) {
                    Ok(ok__) => {
                        ppxmldomelement.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddStructuredAnalysisData<Identity: IDebugFailureAnalysis2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, analysis: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis2_Impl::AddStructuredAnalysisData(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&analysis)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFailureClass: GetFailureClass::<Identity, OFFSET>,
            GetFailureType: GetFailureType::<Identity, OFFSET>,
            GetFailureCode: GetFailureCode::<Identity, OFFSET>,
            Get: Get::<Identity, OFFSET>,
            GetNext: GetNext::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetBuffer: GetBuffer::<Identity, OFFSET>,
            GetUlong: GetUlong::<Identity, OFFSET>,
            GetUlong64: GetUlong64::<Identity, OFFSET>,
            NextEntry: NextEntry::<Identity, OFFSET>,
            SetString: SetString::<Identity, OFFSET>,
            SetExtensionCommand: SetExtensionCommand::<Identity, OFFSET>,
            SetUlong: SetUlong::<Identity, OFFSET>,
            SetUlong64: SetUlong64::<Identity, OFFSET>,
            SetBuffer: SetBuffer::<Identity, OFFSET>,
            AddString: AddString::<Identity, OFFSET>,
            AddExtensionCommand: AddExtensionCommand::<Identity, OFFSET>,
            AddUlong: AddUlong::<Identity, OFFSET>,
            AddUlong64: AddUlong64::<Identity, OFFSET>,
            AddBuffer: AddBuffer::<Identity, OFFSET>,
            GetDebugFATagControl: GetDebugFATagControl::<Identity, OFFSET>,
            GetAnalysisXml: GetAnalysisXml::<Identity, OFFSET>,
            AddStructuredAnalysisData: AddStructuredAnalysisData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugFailureAnalysis2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IDebugFailureAnalysis2 {}
windows_core::imp::define_interface!(IDebugFailureAnalysis3, IDebugFailureAnalysis3_Vtbl, 0x3627dc67_fd45_42ff_9ba4_4a67ee64619f);
windows_core::imp::interface_hierarchy!(IDebugFailureAnalysis3, windows_core::IUnknown);
impl IDebugFailureAnalysis3 {
    pub unsafe fn GetFailureClass(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).GetFailureClass)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE {
        unsafe { (windows_core::Interface::vtable(self).GetFailureType)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetFailureCode(&self) -> u32 {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (windows_core::Interface::vtable(self).GetString)(windows_core::Interface::as_raw(self), tag, core::mem::transmute(str.as_ptr()), str.len().try_into().unwrap()) }
    }
    pub unsafe fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetBuffer)(windows_core::Interface::as_raw(self), tag, buf as _, size) }
    }
    pub unsafe fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).GetUlong64)(windows_core::Interface::as_raw(self), tag, value as _) }
    }
    pub unsafe fn NextEntry(&self, entry: Option<*const FA_ENTRY>) -> *mut FA_ENTRY {
        unsafe { (windows_core::Interface::vtable(self).NextEntry)(windows_core::Interface::as_raw(self), entry.unwrap_or(core::mem::zeroed()) as _) }
    }
    pub unsafe fn SetString<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetString)(windows_core::Interface::as_raw(self), tag, str.param().abi()) }
    }
    pub unsafe fn SetExtensionCommand<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExtensionCommand)(windows_core::Interface::as_raw(self), tag, extension.param().abi()) }
    }
    pub unsafe fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (windows_core::Interface::vtable(self).SetBuffer)(windows_core::Interface::as_raw(self), tag, entrytype, buf, size) }
    }
    pub unsafe fn AddString<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, str: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddString)(windows_core::Interface::as_raw(self), tag, str.param().abi()) }
    }
    pub unsafe fn AddExtensionCommand<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: P1) -> *mut FA_ENTRY
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddExtensionCommand)(windows_core::Interface::as_raw(self), tag, extension.param().abi()) }
    }
    pub unsafe fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
        unsafe { (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 {
        unsafe { (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 {
        unsafe { (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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDebugFATagControl)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAnalysisXml)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddStructuredAnalysisData<P1>(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IDebugFailureAnalysis2>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddStructuredAnalysisData)(windows_core::Interface::as_raw(self), tag, analysis.param().abi()).ok() }
    }
    pub unsafe fn AddThreads<P0>(&self, pdebugfailurethreadenum: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddThreads)(windows_core::Interface::as_raw(self), pdebugfailurethreadenum.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AttributeGet(&self, nindex: u32) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AttributeGet)(windows_core::Interface::as_raw(self), nindex, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn AttributeGetName(&self, nindex: u32) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AttributeGetName)(windows_core::Interface::as_raw(self), nindex, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AttributeSet(&self, nindex: u32, value: &super::super::super::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AttributeSet)(windows_core::Interface::as_raw(self), nindex, core::mem::transmute_copy(value)).ok() }
    }
    pub unsafe fn BlameApplication(&self, postfix: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BlameApplication)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(postfix)).ok() }
    }
    pub unsafe fn BlameProcess(&self, postfix: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BlameProcess)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(postfix)).ok() }
    }
    pub unsafe fn BlameThread<P0>(&self, pthread: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).BlameThread)(windows_core::Interface::as_raw(self), pthread.param().abi()).ok() }
    }
    pub unsafe fn BlameStitch<P0>(&self, pthread: P0, stitch: &windows_core::BSTR) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).BlameStitch)(windows_core::Interface::as_raw(self), pthread.param().abi(), core::mem::transmute_copy(stitch)).ok() }
    }
    pub unsafe fn BlameTEB(&self, address: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BlameTEB)(windows_core::Interface::as_raw(self), address).ok() }
    }
    pub unsafe fn BlameETHREAD(&self, address: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BlameETHREAD)(windows_core::Interface::as_raw(self), address).ok() }
    }
    pub unsafe fn ProblemClassIsSet(&self, nindex: u32) -> windows_core::Result<super::super::super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ProblemClassIsSet)(windows_core::Interface::as_raw(self), nindex, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ProblemClassDelete(&self, nindex: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ProblemClassDelete)(windows_core::Interface::as_raw(self), nindex).ok() }
    }
    pub unsafe fn ProblemClassSet(&self, nindex: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ProblemClassSet)(windows_core::Interface::as_raw(self), nindex).ok() }
    }
    pub unsafe fn ProblemClassSetBSTR(&self, nindex: u32, value: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ProblemClassSetBSTR)(windows_core::Interface::as_raw(self), nindex, core::mem::transmute_copy(value)).ok() }
    }
    pub unsafe fn SetAdditionalXML<P1>(&self, key: &windows_core::BSTR, pxmldomelement: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAdditionalXML)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(key), pxmldomelement.param().abi()).ok() }
    }
    pub unsafe fn GetAdditionalXML(&self, key: &windows_core::BSTR) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAdditionalXML)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(key), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn DeleteAdditionalXML(&self, key: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeleteAdditionalXML)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(key)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugFailureAnalysis3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFailureClass: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub GetFailureType: unsafe extern "system" fn(*mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE,
    pub GetFailureCode: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub Get: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *const FA_ENTRY, DEBUG_FLR_PARAM_TYPE, DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY,
    pub GetString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PSTR, u32) -> *mut FA_ENTRY,
    pub GetBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub GetUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u32) -> *mut FA_ENTRY,
    pub GetUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut u64) -> *mut FA_ENTRY,
    pub NextEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const FA_ENTRY) -> *mut FA_ENTRY,
    pub SetString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub SetExtensionCommand: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub SetUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u32) -> *mut FA_ENTRY,
    pub SetUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u64) -> *mut FA_ENTRY,
    pub SetBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, FA_ENTRY_TYPE, *const core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub AddString: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub AddExtensionCommand: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, windows_core::PCSTR) -> *mut FA_ENTRY,
    pub AddUlong: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u32) -> *mut FA_ENTRY,
    pub AddUlong64: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, u64) -> *mut FA_ENTRY,
    pub AddBuffer: unsafe extern "system" fn(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, FA_ENTRY_TYPE, *const core::ffi::c_void, u32) -> *mut FA_ENTRY,
    pub GetDebugFATagControl: unsafe extern "system" fn(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, *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(*mut core::ffi::c_void, DEBUG_FLR_PARAM_TYPE, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AttributeGet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AttributeGet: usize,
    pub AttributeGetName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AttributeSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AttributeSet: usize,
    pub BlameApplication: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BlameProcess: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BlameThread: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BlameStitch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BlameTEB: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub BlameETHREAD: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub ProblemClassIsSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ProblemClassDelete: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ProblemClassSet: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ProblemClassSetBSTR: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetAdditionalXML: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetAdditionalXML: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DeleteAdditionalXML: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDebugFailureAnalysis3_Impl: windows_core::IUnknownImpl {
    fn GetFailureClass(&self) -> u32;
    fn GetFailureType(&self) -> DEBUG_FAILURE_TYPE;
    fn GetFailureCode(&self) -> u32;
    fn Get(&self, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetNext(&self, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY;
    fn GetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY;
    fn GetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn GetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY;
    fn GetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY;
    fn NextEntry(&self, entry: *const FA_ENTRY) -> *mut FA_ENTRY;
    fn SetString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn SetExtensionCommand(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn SetUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY;
    fn SetUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY;
    fn SetBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn AddString(&self, tag: DEBUG_FLR_PARAM_TYPE, str: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn AddExtensionCommand(&self, tag: DEBUG_FLR_PARAM_TYPE, extension: &windows_core::PCSTR) -> *mut FA_ENTRY;
    fn AddUlong(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY;
    fn AddUlong64(&self, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY;
    fn AddBuffer(&self, tag: DEBUG_FLR_PARAM_TYPE, entrytype: FA_ENTRY_TYPE, buf: *const core::ffi::c_void, size: u32) -> *mut FA_ENTRY;
    fn GetDebugFATagControl(&self) -> windows_core::Result<IDebugFAEntryTags>;
    fn GetAnalysisXml(&self) -> windows_core::Result<super::super::super::super::Data::Xml::MsXml::IXMLDOMElement>;
    fn AddStructuredAnalysisData(&self, tag: DEBUG_FLR_PARAM_TYPE, analysis: windows_core::Ref<'_, IDebugFailureAnalysis2>) -> windows_core::Result<()>;
    fn AddThreads(&self, pdebugfailurethreadenum: windows_core::Ref<'_, windows_core::IUnknown>) -> windows_core::Result<()>;
    fn AttributeGet(&self, nindex: u32) -> windows_core::Result<super::super::super::Variant::VARIANT>;
    fn AttributeGetName(&self, nindex: u32) -> windows_core::Result<windows_core::BSTR>;
    fn AttributeSet(&self, nindex: u32, value: &super::super::super::Variant::VARIANT) -> windows_core::Result<()>;
    fn BlameApplication(&self, postfix: &windows_core::BSTR) -> windows_core::Result<()>;
    fn BlameProcess(&self, postfix: &windows_core::BSTR) -> windows_core::Result<()>;
    fn BlameThread(&self, pthread: windows_core::Ref<'_, windows_core::IUnknown>) -> windows_core::Result<()>;
    fn BlameStitch(&self, pthread: windows_core::Ref<'_, windows_core::IUnknown>, stitch: &windows_core::BSTR) -> windows_core::Result<()>;
    fn BlameTEB(&self, address: u64) -> windows_core::Result<()>;
    fn BlameETHREAD(&self, address: u64) -> windows_core::Result<()>;
    fn ProblemClassIsSet(&self, nindex: u32) -> windows_core::Result<super::super::super::super::Foundation::VARIANT_BOOL>;
    fn ProblemClassDelete(&self, nindex: u32) -> windows_core::Result<()>;
    fn ProblemClassSet(&self, nindex: u32) -> windows_core::Result<()>;
    fn ProblemClassSetBSTR(&self, nindex: u32, value: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SetAdditionalXML(&self, key: &windows_core::BSTR, pxmldomelement: windows_core::Ref<'_, windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetAdditionalXML(&self, key: &windows_core::BSTR) -> windows_core::Result<windows_core::IUnknown>;
    fn DeleteAdditionalXML(&self, key: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDebugFailureAnalysis3_Vtbl {
    pub const fn new<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFailureClass<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetFailureClass(this)
            }
        }
        unsafe extern "system" fn GetFailureType<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> DEBUG_FAILURE_TYPE {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetFailureType(this)
            }
        }
        unsafe extern "system" fn GetFailureCode<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetFailureCode(this)
            }
        }
        unsafe extern "system" fn Get<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::Get(this, core::mem::transmute_copy(&tag))
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *const FA_ENTRY, tag: DEBUG_FLR_PARAM_TYPE, tagmask: DEBUG_FLR_PARAM_TYPE) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetNext(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&tag), core::mem::transmute_copy(&tagmask))
            }
        }
        unsafe extern "system" fn GetString<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PSTR, maxsize: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetString(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&str), core::mem::transmute_copy(&maxsize))
            }
        }
        unsafe extern "system" fn GetBuffer<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, buf: *mut core::ffi::c_void, size: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn GetUlong<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn GetUlong64<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: *mut u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::GetUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn NextEntry<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, entry: *const FA_ENTRY) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::NextEntry(this, core::mem::transmute_copy(&entry))
            }
        }
        unsafe extern "system" fn SetString<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetString(this, core::mem::transmute_copy(&tag), core::mem::transmute(&str))
            }
        }
        unsafe extern "system" fn SetExtensionCommand<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetExtensionCommand(this, core::mem::transmute_copy(&tag), core::mem::transmute(&extension))
            }
        }
        unsafe extern "system" fn SetUlong<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn SetUlong64<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn SetBuffer<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&entrytype), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn AddString<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, str: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddString(this, core::mem::transmute_copy(&tag), core::mem::transmute(&str))
            }
        }
        unsafe extern "system" fn AddExtensionCommand<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, extension: windows_core::PCSTR) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddExtensionCommand(this, core::mem::transmute_copy(&tag), core::mem::transmute(&extension))
            }
        }
        unsafe extern "system" fn AddUlong<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u32) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddUlong(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn AddUlong64<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, value: u64) -> *mut FA_ENTRY {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddUlong64(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&value))
            }
        }
        unsafe extern "system" fn AddBuffer<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddBuffer(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&entrytype), core::mem::transmute_copy(&buf), core::mem::transmute_copy(&size))
            }
        }
        unsafe extern "system" fn GetDebugFATagControl<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fatagcontrol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::GetDebugFATagControl(this) {
                    Ok(ok__) => {
                        fatagcontrol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAnalysisXml<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppxmldomelement: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::GetAnalysisXml(this) {
                    Ok(ok__) => {
                        ppxmldomelement.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddStructuredAnalysisData<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, tag: DEBUG_FLR_PARAM_TYPE, analysis: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddStructuredAnalysisData(this, core::mem::transmute_copy(&tag), core::mem::transmute_copy(&analysis)).into()
            }
        }
        unsafe extern "system" fn AddThreads<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdebugfailurethreadenum: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AddThreads(this, core::mem::transmute_copy(&pdebugfailurethreadenum)).into()
            }
        }
        unsafe extern "system" fn AttributeGet<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32, pvalue: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::AttributeGet(this, core::mem::transmute_copy(&nindex)) {
                    Ok(ok__) => {
                        pvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AttributeGetName<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32, pname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::AttributeGetName(this, core::mem::transmute_copy(&nindex)) {
                    Ok(ok__) => {
                        pname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AttributeSet<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32, value: super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::AttributeSet(this, core::mem::transmute_copy(&nindex), core::mem::transmute(&value)).into()
            }
        }
        unsafe extern "system" fn BlameApplication<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, postfix: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameApplication(this, core::mem::transmute(&postfix)).into()
            }
        }
        unsafe extern "system" fn BlameProcess<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, postfix: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameProcess(this, core::mem::transmute(&postfix)).into()
            }
        }
        unsafe extern "system" fn BlameThread<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pthread: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameThread(this, core::mem::transmute_copy(&pthread)).into()
            }
        }
        unsafe extern "system" fn BlameStitch<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pthread: *mut core::ffi::c_void, stitch: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameStitch(this, core::mem::transmute_copy(&pthread), core::mem::transmute(&stitch)).into()
            }
        }
        unsafe extern "system" fn BlameTEB<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, address: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameTEB(this, core::mem::transmute_copy(&address)).into()
            }
        }
        unsafe extern "system" fn BlameETHREAD<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, address: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::BlameETHREAD(this, core::mem::transmute_copy(&address)).into()
            }
        }
        unsafe extern "system" fn ProblemClassIsSet<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32, pset: *mut super::super::super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::ProblemClassIsSet(this, core::mem::transmute_copy(&nindex)) {
                    Ok(ok__) => {
                        pset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ProblemClassDelete<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::ProblemClassDelete(this, core::mem::transmute_copy(&nindex)).into()
            }
        }
        unsafe extern "system" fn ProblemClassSet<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::ProblemClassSet(this, core::mem::transmute_copy(&nindex)).into()
            }
        }
        unsafe extern "system" fn ProblemClassSetBSTR<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nindex: u32, value: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::ProblemClassSetBSTR(this, core::mem::transmute_copy(&nindex), core::mem::transmute(&value)).into()
            }
        }
        unsafe extern "system" fn SetAdditionalXML<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *mut core::ffi::c_void, pxmldomelement: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::SetAdditionalXML(this, core::mem::transmute(&key), core::mem::transmute_copy(&pxmldomelement)).into()
            }
        }
        unsafe extern "system" fn GetAdditionalXML<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *mut core::ffi::c_void, ppxmldomelement: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugFailureAnalysis3_Impl::GetAdditionalXML(this, core::mem::transmute(&key)) {
                    Ok(ok__) => {
                        ppxmldomelement.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DeleteAdditionalXML<Identity: IDebugFailureAnalysis3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugFailureAnalysis3_Impl::DeleteAdditionalXML(this, core::mem::transmute(&key)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFailureClass: GetFailureClass::<Identity, OFFSET>,
            GetFailureType: GetFailureType::<Identity, OFFSET>,
            GetFailureCode: GetFailureCode::<Identity, OFFSET>,
            Get: Get::<Identity, OFFSET>,
            GetNext: GetNext::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetBuffer: GetBuffer::<Identity, OFFSET>,
            GetUlong: GetUlong::<Identity, OFFSET>,
            GetUlong64: GetUlong64::<Identity, OFFSET>,
            NextEntry: NextEntry::<Identity, OFFSET>,
            SetString: SetString::<Identity, OFFSET>,
            SetExtensionCommand: SetExtensionCommand::<Identity, OFFSET>,
            SetUlong: SetUlong::<Identity, OFFSET>,
            SetUlong64: SetUlong64::<Identity, OFFSET>,
            SetBuffer: SetBuffer::<Identity, OFFSET>,
            AddString: AddString::<Identity, OFFSET>,
            AddExtensionCommand: AddExtensionCommand::<Identity, OFFSET>,
            AddUlong: AddUlong::<Identity, OFFSET>,
            AddUlong64: AddUlong64::<Identity, OFFSET>,
            AddBuffer: AddBuffer::<Identity, OFFSET>,
            GetDebugFATagControl: GetDebugFATagControl::<Identity, OFFSET>,
            GetAnalysisXml: GetAnalysisXml::<Identity, OFFSET>,
            AddStructuredAnalysisData: AddStructuredAnalysisData::<Identity, OFFSET>,
            AddThreads: AddThreads::<Identity, OFFSET>,
            AttributeGet: AttributeGet::<Identity, OFFSET>,
            AttributeGetName: AttributeGetName::<Identity, OFFSET>,
            AttributeSet: AttributeSet::<Identity, OFFSET>,
            BlameApplication: BlameApplication::<Identity, OFFSET>,
            BlameProcess: BlameProcess::<Identity, OFFSET>,
            BlameThread: BlameThread::<Identity, OFFSET>,
            BlameStitch: BlameStitch::<Identity, OFFSET>,
            BlameTEB: BlameTEB::<Identity, OFFSET>,
            BlameETHREAD: BlameETHREAD::<Identity, OFFSET>,
            ProblemClassIsSet: ProblemClassIsSet::<Identity, OFFSET>,
            ProblemClassDelete: ProblemClassDelete::<Identity, OFFSET>,
            ProblemClassSet: ProblemClassSet::<Identity, OFFSET>,
            ProblemClassSetBSTR: ProblemClassSetBSTR::<Identity, OFFSET>,
            SetAdditionalXML: SetAdditionalXML::<Identity, OFFSET>,
            GetAdditionalXML: GetAdditionalXML::<Identity, OFFSET>,
            DeleteAdditionalXML: DeleteAdditionalXML::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugFailureAnalysis3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDebugFailureAnalysis3 {}
windows_core::imp::define_interface!(IDebugHost, IDebugHost_Vtbl, 0xb8c74943_6b2c_4eeb_b5c5_35d378a6d99d);
windows_core::imp::interface_hierarchy!(IDebugHost, windows_core::IUnknown);
impl IDebugHost {
    pub unsafe fn GetHostDefinedInterface(&self) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHostDefinedInterface)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetCurrentContext(&self) -> windows_core::Result<IDebugHostContext> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentContext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDefaultMetadata(&self) -> windows_core::Result<IKeyStore> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultMetadata)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetHostDefinedInterface: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCurrentContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDefaultMetadata: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHost_Impl: windows_core::IUnknownImpl {
    fn GetHostDefinedInterface(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn GetCurrentContext(&self) -> windows_core::Result<IDebugHostContext>;
    fn GetDefaultMetadata(&self) -> windows_core::Result<IKeyStore>;
}
impl IDebugHost_Vtbl {
    pub const fn new<Identity: IDebugHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetHostDefinedInterface<Identity: IDebugHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hostunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHost_Impl::GetHostDefinedInterface(this) {
                    Ok(ok__) => {
                        hostunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentContext<Identity: IDebugHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHost_Impl::GetCurrentContext(this) {
                    Ok(ok__) => {
                        context.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDefaultMetadata<Identity: IDebugHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, defaultmetadatastore: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHost_Impl::GetDefaultMetadata(this) {
                    Ok(ok__) => {
                        defaultmetadatastore.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHostDefinedInterface: GetHostDefinedInterface::<Identity, OFFSET>,
            GetCurrentContext: GetCurrentContext::<Identity, OFFSET>,
            GetDefaultMetadata: GetDefaultMetadata::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHost as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHost {}
windows_core::imp::define_interface!(IDebugHostBaseClass, IDebugHostBaseClass_Vtbl, 0xb94d57d2_390b_40f7_b5b4_b6db897d974b);
impl core::ops::Deref for IDebugHostBaseClass {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostBaseClass, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostBaseClass {
    pub unsafe fn GetOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostBaseClass_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
}
pub trait IDebugHostBaseClass_Impl: IDebugHostSymbol_Impl {
    fn GetOffset(&self) -> windows_core::Result<u64>;
}
impl IDebugHostBaseClass_Vtbl {
    pub const fn new<Identity: IDebugHostBaseClass_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetOffset<Identity: IDebugHostBaseClass_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostBaseClass_Impl::GetOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(), GetOffset: GetOffset::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostBaseClass as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostBaseClass {}
windows_core::imp::define_interface!(IDebugHostConstant, IDebugHostConstant_Vtbl, 0x62787edc_fa76_4690_bd71_5e8c3e2937ec);
impl core::ops::Deref for IDebugHostConstant {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostConstant, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostConstant {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostConstant_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetValue: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDebugHostConstant_Impl: IDebugHostSymbol_Impl {
    fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDebugHostConstant_Vtbl {
    pub const fn new<Identity: IDebugHostConstant_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetValue<Identity: IDebugHostConstant_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostConstant_Impl::GetValue(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(), GetValue: GetValue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostConstant as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDebugHostConstant {}
windows_core::imp::define_interface!(IDebugHostContext, IDebugHostContext_Vtbl, 0xa68c70d8_5ec0_46e5_b775_3134a48ea2e3);
windows_core::imp::interface_hierarchy!(IDebugHostContext, windows_core::IUnknown);
impl IDebugHostContext {
    pub unsafe fn IsEqualTo<P0>(&self, pcontext: P0) -> windows_core::Result<bool>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsEqualTo)(windows_core::Interface::as_raw(self), pcontext.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostContext_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IsEqualTo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
pub trait IDebugHostContext_Impl: windows_core::IUnknownImpl {
    fn IsEqualTo(&self, pcontext: windows_core::Ref<'_, IDebugHostContext>) -> windows_core::Result<bool>;
}
impl IDebugHostContext_Vtbl {
    pub const fn new<Identity: IDebugHostContext_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsEqualTo<Identity: IDebugHostContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcontext: *mut core::ffi::c_void, pisequal: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostContext_Impl::IsEqualTo(this, core::mem::transmute_copy(&pcontext)) {
                    Ok(ok__) => {
                        pisequal.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), IsEqualTo: IsEqualTo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostContext as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostContext {}
windows_core::imp::define_interface!(IDebugHostData, IDebugHostData_Vtbl, 0xa3d64993_826c_44fa_897d_926f2fe7ad0b);
impl core::ops::Deref for IDebugHostData {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostData, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostData {
    pub unsafe fn GetLocationKind(&self) -> windows_core::Result<LocationKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocationKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLocation(&self) -> windows_core::Result<Location> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostData_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut LocationKind) -> windows_core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetValue: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDebugHostData_Impl: IDebugHostSymbol_Impl {
    fn GetLocationKind(&self) -> windows_core::Result<LocationKind>;
    fn GetLocation(&self) -> windows_core::Result<Location>;
    fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDebugHostData_Vtbl {
    pub const fn new<Identity: IDebugHostData_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetLocationKind<Identity: IDebugHostData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationkind: *mut LocationKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostData_Impl::GetLocationKind(this) {
                    Ok(ok__) => {
                        locationkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLocation<Identity: IDebugHostData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, location: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostData_Impl::GetLocation(this) {
                    Ok(ok__) => {
                        location.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValue<Identity: IDebugHostData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostData_Impl::GetValue(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(),
            GetLocationKind: GetLocationKind::<Identity, OFFSET>,
            GetLocation: GetLocation::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostData as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDebugHostData {}
windows_core::imp::define_interface!(IDebugHostErrorSink, IDebugHostErrorSink_Vtbl, 0xc8ff0f0b_fce9_467e_8bb3_5d69ef109c00);
windows_core::imp::interface_hierarchy!(IDebugHostErrorSink, windows_core::IUnknown);
impl IDebugHostErrorSink {
    pub unsafe fn ReportError<P2>(&self, errclass: ErrorClass, hrerror: windows_core::HRESULT, message: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReportError)(windows_core::Interface::as_raw(self), errclass, hrerror, message.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostErrorSink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReportError: unsafe extern "system" fn(*mut core::ffi::c_void, ErrorClass, windows_core::HRESULT, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugHostErrorSink_Impl: windows_core::IUnknownImpl {
    fn ReportError(&self, errclass: ErrorClass, hrerror: windows_core::HRESULT, message: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugHostErrorSink_Vtbl {
    pub const fn new<Identity: IDebugHostErrorSink_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReportError<Identity: IDebugHostErrorSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, errclass: ErrorClass, hrerror: windows_core::HRESULT, message: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostErrorSink_Impl::ReportError(this, core::mem::transmute_copy(&errclass), core::mem::transmute_copy(&hrerror), core::mem::transmute(&message)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ReportError: ReportError::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostErrorSink as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostErrorSink {}
windows_core::imp::define_interface!(IDebugHostEvaluator, IDebugHostEvaluator_Vtbl, 0x0fef9a21_577e_4997_ac7b_1c4883241d99);
windows_core::imp::interface_hierarchy!(IDebugHostEvaluator, windows_core::IUnknown);
impl IDebugHostEvaluator {
    pub unsafe fn EvaluateExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut Option<IModelObject>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateExpression)(windows_core::Interface::as_raw(self), context.param().abi(), expression.param().abi(), bindingcontext.param().abi(), core::mem::transmute(result), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EvaluateExtendedExpression<P0, P1, P2>(&self, context: P0, expression: P1, bindingcontext: P2, result: *mut Option<IModelObject>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateExtendedExpression)(windows_core::Interface::as_raw(self), context.param().abi(), expression.param().abi(), bindingcontext.param().abi(), core::mem::transmute(result), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostEvaluator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EvaluateExpression: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EvaluateExtendedExpression: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostEvaluator_Impl: windows_core::IUnknownImpl {
    fn EvaluateExpression(&self, context: windows_core::Ref<'_, IDebugHostContext>, expression: &windows_core::PCWSTR, bindingcontext: windows_core::Ref<'_, IModelObject>, result: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn EvaluateExtendedExpression(&self, context: windows_core::Ref<'_, IDebugHostContext>, expression: &windows_core::PCWSTR, bindingcontext: windows_core::Ref<'_, IModelObject>, result: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IDebugHostEvaluator_Vtbl {
    pub const fn new<Identity: IDebugHostEvaluator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EvaluateExpression<Identity: IDebugHostEvaluator_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostEvaluator_Impl::EvaluateExpression(this, core::mem::transmute_copy(&context), core::mem::transmute(&expression), core::mem::transmute_copy(&bindingcontext), core::mem::transmute_copy(&result), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn EvaluateExtendedExpression<Identity: IDebugHostEvaluator_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostEvaluator_Impl::EvaluateExtendedExpression(this, core::mem::transmute_copy(&context), core::mem::transmute(&expression), core::mem::transmute_copy(&bindingcontext), core::mem::transmute_copy(&result), core::mem::transmute_copy(&metadata)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EvaluateExpression: EvaluateExpression::<Identity, OFFSET>,
            EvaluateExtendedExpression: EvaluateExtendedExpression::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostEvaluator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostEvaluator {}
windows_core::imp::define_interface!(IDebugHostEvaluator2, IDebugHostEvaluator2_Vtbl, 0xa117a435_1fb4_4092_a2ab_a929576c1e87);
impl core::ops::Deref for IDebugHostEvaluator2 {
    type Target = IDebugHostEvaluator;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostEvaluator2, windows_core::IUnknown, IDebugHostEvaluator);
impl IDebugHostEvaluator2 {
    pub unsafe fn AssignTo<P0, P1>(&self, assignmentreference: P0, assignmentvalue: P1, assignmentresult: *mut Option<IModelObject>, assignmentmetadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).AssignTo)(windows_core::Interface::as_raw(self), assignmentreference.param().abi(), assignmentvalue.param().abi(), core::mem::transmute(assignmentresult), assignmentmetadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostEvaluator2_Vtbl {
    pub base__: IDebugHostEvaluator_Vtbl,
    pub AssignTo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostEvaluator2_Impl: IDebugHostEvaluator_Impl {
    fn AssignTo(&self, assignmentreference: windows_core::Ref<'_, IModelObject>, assignmentvalue: windows_core::Ref<'_, IModelObject>, assignmentresult: windows_core::OutRef<'_, IModelObject>, assignmentmetadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IDebugHostEvaluator2_Vtbl {
    pub const fn new<Identity: IDebugHostEvaluator2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AssignTo<Identity: IDebugHostEvaluator2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostEvaluator2_Impl::AssignTo(this, core::mem::transmute_copy(&assignmentreference), core::mem::transmute_copy(&assignmentvalue), core::mem::transmute_copy(&assignmentresult), core::mem::transmute_copy(&assignmentmetadata)).into()
            }
        }
        Self { base__: IDebugHostEvaluator_Vtbl::new::<Identity, OFFSET>(), AssignTo: AssignTo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostEvaluator2 as windows_core::Interface>::IID || iid == &<IDebugHostEvaluator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostEvaluator2 {}
windows_core::imp::define_interface!(IDebugHostExtensibility, IDebugHostExtensibility_Vtbl, 0x3c2b24e1_11d0_4f86_8ae5_4df166f73253);
windows_core::imp::interface_hierarchy!(IDebugHostExtensibility, windows_core::IUnknown);
impl IDebugHostExtensibility {
    pub unsafe fn CreateFunctionAlias<P0, P1>(&self, aliasname: P0, functionobject: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateFunctionAlias)(windows_core::Interface::as_raw(self), aliasname.param().abi(), functionobject.param().abi()).ok() }
    }
    pub unsafe fn DestroyFunctionAlias<P0>(&self, aliasname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DestroyFunctionAlias)(windows_core::Interface::as_raw(self), aliasname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostExtensibility_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateFunctionAlias: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DestroyFunctionAlias: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugHostExtensibility_Impl: windows_core::IUnknownImpl {
    fn CreateFunctionAlias(&self, aliasname: &windows_core::PCWSTR, functionobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn DestroyFunctionAlias(&self, aliasname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugHostExtensibility_Vtbl {
    pub const fn new<Identity: IDebugHostExtensibility_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateFunctionAlias<Identity: IDebugHostExtensibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, aliasname: windows_core::PCWSTR, functionobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostExtensibility_Impl::CreateFunctionAlias(this, core::mem::transmute(&aliasname), core::mem::transmute_copy(&functionobject)).into()
            }
        }
        unsafe extern "system" fn DestroyFunctionAlias<Identity: IDebugHostExtensibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, aliasname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostExtensibility_Impl::DestroyFunctionAlias(this, core::mem::transmute(&aliasname)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateFunctionAlias: CreateFunctionAlias::<Identity, OFFSET>,
            DestroyFunctionAlias: DestroyFunctionAlias::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostExtensibility as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostExtensibility {}
windows_core::imp::define_interface!(IDebugHostField, IDebugHostField_Vtbl, 0xe06f6495_16bc_4cc9_b11d_2a6b23fa72f3);
impl core::ops::Deref for IDebugHostField {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostField, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostField {
    pub unsafe fn GetLocationKind(&self) -> windows_core::Result<LocationKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocationKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLocation(&self) -> windows_core::Result<Location> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostField_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut LocationKind) -> windows_core::HRESULT,
    pub GetOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetValue: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDebugHostField_Impl: IDebugHostSymbol_Impl {
    fn GetLocationKind(&self) -> windows_core::Result<LocationKind>;
    fn GetOffset(&self) -> windows_core::Result<u64>;
    fn GetLocation(&self) -> windows_core::Result<Location>;
    fn GetValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDebugHostField_Vtbl {
    pub const fn new<Identity: IDebugHostField_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetLocationKind<Identity: IDebugHostField_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationkind: *mut LocationKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostField_Impl::GetLocationKind(this) {
                    Ok(ok__) => {
                        locationkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetOffset<Identity: IDebugHostField_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostField_Impl::GetOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLocation<Identity: IDebugHostField_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, location: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostField_Impl::GetLocation(this) {
                    Ok(ok__) => {
                        location.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValue<Identity: IDebugHostField_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostField_Impl::GetValue(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(),
            GetLocationKind: GetLocationKind::<Identity, OFFSET>,
            GetOffset: GetOffset::<Identity, OFFSET>,
            GetLocation: GetLocation::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostField as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDebugHostField {}
windows_core::imp::define_interface!(IDebugHostMemory, IDebugHostMemory_Vtbl, 0x212149c9_9183_4a3e_b00e_4fd1dc95339b);
windows_core::imp::interface_hierarchy!(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: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReadBytes)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteBytes<P0>(&self, context: P0, location: Location, buffer: *const core::ffi::c_void, buffersize: u64, byteswritten: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteBytes)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadPointers<P0>(&self, context: P0, location: Location, pointers: &mut [u64]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReadPointers)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), pointers.len().try_into().unwrap(), 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::Param<IDebugHostContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).WritePointers)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), pointers.len().try_into().unwrap(), 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::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisplayStringForLocation)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), verbose, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostMemory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReadBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub WriteBytes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *const core::ffi::c_void, u64, *mut u64) -> windows_core::HRESULT,
    pub ReadPointers: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, u64, *mut u64) -> windows_core::HRESULT,
    pub WritePointers: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, u64, *const u64) -> windows_core::HRESULT,
    pub GetDisplayStringForLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, u8, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostMemory_Impl: windows_core::IUnknownImpl {
    fn ReadBytes(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location, buffer: *mut core::ffi::c_void, buffersize: u64, bytesread: *mut u64) -> windows_core::Result<()>;
    fn WriteBytes(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location, buffer: *const core::ffi::c_void, buffersize: u64, byteswritten: *mut u64) -> windows_core::Result<()>;
    fn ReadPointers(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location, count: u64, pointers: *mut u64) -> windows_core::Result<()>;
    fn WritePointers(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location, count: u64, pointers: *const u64) -> windows_core::Result<()>;
    fn GetDisplayStringForLocation(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location, verbose: u8) -> windows_core::Result<windows_core::BSTR>;
}
impl IDebugHostMemory_Vtbl {
    pub const fn new<Identity: IDebugHostMemory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadBytes<Identity: IDebugHostMemory_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostMemory_Impl::ReadBytes(this, core::mem::transmute_copy(&context), core::mem::transmute(&location), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteBytes<Identity: IDebugHostMemory_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostMemory_Impl::WriteBytes(this, core::mem::transmute_copy(&context), core::mem::transmute(&location), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn ReadPointers<Identity: IDebugHostMemory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, location: Location, count: u64, pointers: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostMemory_Impl::ReadPointers(this, core::mem::transmute_copy(&context), core::mem::transmute(&location), core::mem::transmute_copy(&count), core::mem::transmute_copy(&pointers)).into()
            }
        }
        unsafe extern "system" fn WritePointers<Identity: IDebugHostMemory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, location: Location, count: u64, pointers: *const u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostMemory_Impl::WritePointers(this, core::mem::transmute_copy(&context), core::mem::transmute(&location), core::mem::transmute_copy(&count), core::mem::transmute_copy(&pointers)).into()
            }
        }
        unsafe extern "system" fn GetDisplayStringForLocation<Identity: IDebugHostMemory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, location: Location, verbose: u8, locationname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostMemory_Impl::GetDisplayStringForLocation(this, core::mem::transmute_copy(&context), core::mem::transmute(&location), core::mem::transmute_copy(&verbose)) {
                    Ok(ok__) => {
                        locationname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadBytes: ReadBytes::<Identity, OFFSET>,
            WriteBytes: WriteBytes::<Identity, OFFSET>,
            ReadPointers: ReadPointers::<Identity, OFFSET>,
            WritePointers: WritePointers::<Identity, OFFSET>,
            GetDisplayStringForLocation: GetDisplayStringForLocation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostMemory as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostMemory {}
windows_core::imp::define_interface!(IDebugHostMemory2, IDebugHostMemory2_Vtbl, 0xeea033de_38f6_416b_a251_1d3771001270);
impl core::ops::Deref for IDebugHostMemory2 {
    type Target = IDebugHostMemory;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostMemory2, windows_core::IUnknown, IDebugHostMemory);
impl IDebugHostMemory2 {
    pub unsafe fn LinearizeLocation<P0>(&self, context: P0, location: Location) -> windows_core::Result<Location>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).LinearizeLocation)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(location), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostMemory2_Vtbl {
    pub base__: IDebugHostMemory_Vtbl,
    pub LinearizeLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut Location) -> windows_core::HRESULT,
}
pub trait IDebugHostMemory2_Impl: IDebugHostMemory_Impl {
    fn LinearizeLocation(&self, context: windows_core::Ref<'_, IDebugHostContext>, location: &Location) -> windows_core::Result<Location>;
}
impl IDebugHostMemory2_Vtbl {
    pub const fn new<Identity: IDebugHostMemory2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LinearizeLocation<Identity: IDebugHostMemory2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, location: Location, plinearizedlocation: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostMemory2_Impl::LinearizeLocation(this, core::mem::transmute_copy(&context), core::mem::transmute(&location)) {
                    Ok(ok__) => {
                        plinearizedlocation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IDebugHostMemory_Vtbl::new::<Identity, OFFSET>(), LinearizeLocation: LinearizeLocation::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostMemory2 as windows_core::Interface>::IID || iid == &<IDebugHostMemory as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostMemory2 {}
windows_core::imp::define_interface!(IDebugHostModule, IDebugHostModule_Vtbl, 0xc9ba3e18_d070_4378_bbd0_34613b346e1e);
impl core::ops::Deref for IDebugHostModule {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostModule, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostModule {
    pub unsafe fn GetImageName(&self, allowpath: u8) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImageName)(windows_core::Interface::as_raw(self), allowpath, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetBaseLocation(&self) -> windows_core::Result<Location> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBaseLocation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetVersion(&self, fileversion: Option<*mut u64>, productversion: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetVersion)(windows_core::Interface::as_raw(self), fileversion.unwrap_or(core::mem::zeroed()) as _, productversion.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn FindTypeByName<P0>(&self, typename: P0) -> windows_core::Result<IDebugHostType>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindTypeByName)(windows_core::Interface::as_raw(self), typename.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindSymbolByRVA(&self, rva: u64) -> windows_core::Result<IDebugHostSymbol> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindSymbolByRVA)(windows_core::Interface::as_raw(self), rva, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindSymbolByName<P0>(&self, symbolname: P0) -> windows_core::Result<IDebugHostSymbol>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindSymbolByName)(windows_core::Interface::as_raw(self), symbolname.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModule_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetImageName: unsafe extern "system" fn(*mut core::ffi::c_void, u8, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBaseLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location) -> windows_core::HRESULT,
    pub GetVersion: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut u64) -> windows_core::HRESULT,
    pub FindTypeByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindSymbolByRVA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindSymbolByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostModule_Impl: IDebugHostSymbol_Impl {
    fn GetImageName(&self, allowpath: u8) -> windows_core::Result<windows_core::BSTR>;
    fn GetBaseLocation(&self) -> windows_core::Result<Location>;
    fn GetVersion(&self, fileversion: *mut u64, productversion: *mut u64) -> windows_core::Result<()>;
    fn FindTypeByName(&self, typename: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostType>;
    fn FindSymbolByRVA(&self, rva: u64) -> windows_core::Result<IDebugHostSymbol>;
    fn FindSymbolByName(&self, symbolname: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostSymbol>;
}
impl IDebugHostModule_Vtbl {
    pub const fn new<Identity: IDebugHostModule_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetImageName<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, allowpath: u8, imagename: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModule_Impl::GetImageName(this, core::mem::transmute_copy(&allowpath)) {
                    Ok(ok__) => {
                        imagename.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBaseLocation<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulebaselocation: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModule_Impl::GetBaseLocation(this) {
                    Ok(ok__) => {
                        modulebaselocation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetVersion<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fileversion: *mut u64, productversion: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostModule_Impl::GetVersion(this, core::mem::transmute_copy(&fileversion), core::mem::transmute_copy(&productversion)).into()
            }
        }
        unsafe extern "system" fn FindTypeByName<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, typename: windows_core::PCWSTR, r#type: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModule_Impl::FindTypeByName(this, core::mem::transmute(&typename)) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindSymbolByRVA<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rva: u64, symbol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModule_Impl::FindSymbolByRVA(this, core::mem::transmute_copy(&rva)) {
                    Ok(ok__) => {
                        symbol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindSymbolByName<Identity: IDebugHostModule_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbolname: windows_core::PCWSTR, symbol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModule_Impl::FindSymbolByName(this, core::mem::transmute(&symbolname)) {
                    Ok(ok__) => {
                        symbol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(),
            GetImageName: GetImageName::<Identity, OFFSET>,
            GetBaseLocation: GetBaseLocation::<Identity, OFFSET>,
            GetVersion: GetVersion::<Identity, OFFSET>,
            FindTypeByName: FindTypeByName::<Identity, OFFSET>,
            FindSymbolByRVA: FindSymbolByRVA::<Identity, OFFSET>,
            FindSymbolByName: FindSymbolByName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostModule as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostModule {}
windows_core::imp::define_interface!(IDebugHostModule2, IDebugHostModule2_Vtbl, 0xb51887e8_bcd0_4e8f_a8c7_434398b78c37);
impl core::ops::Deref for IDebugHostModule2 {
    type Target = IDebugHostModule;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostModule2, windows_core::IUnknown, IDebugHostSymbol, IDebugHostModule);
impl IDebugHostModule2 {
    pub unsafe fn FindContainingSymbolByRVA(&self, rva: u64, symbol: *mut Option<IDebugHostSymbol>, offset: *mut u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FindContainingSymbolByRVA)(windows_core::Interface::as_raw(self), rva, core::mem::transmute(symbol), offset as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModule2_Vtbl {
    pub base__: IDebugHostModule_Vtbl,
    pub FindContainingSymbolByRVA: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
}
pub trait IDebugHostModule2_Impl: IDebugHostModule_Impl {
    fn FindContainingSymbolByRVA(&self, rva: u64, symbol: windows_core::OutRef<'_, IDebugHostSymbol>, offset: *mut u64) -> windows_core::Result<()>;
}
impl IDebugHostModule2_Vtbl {
    pub const fn new<Identity: IDebugHostModule2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FindContainingSymbolByRVA<Identity: IDebugHostModule2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rva: u64, symbol: *mut *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostModule2_Impl::FindContainingSymbolByRVA(this, core::mem::transmute_copy(&rva), core::mem::transmute_copy(&symbol), core::mem::transmute_copy(&offset)).into()
            }
        }
        Self { base__: IDebugHostModule_Vtbl::new::<Identity, OFFSET>(), FindContainingSymbolByRVA: FindContainingSymbolByRVA::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostModule2 as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID || iid == &<IDebugHostModule as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostModule2 {}
windows_core::imp::define_interface!(IDebugHostModuleSignature, IDebugHostModuleSignature_Vtbl, 0x31e53a5a_01ee_4bbb_b899_4b46ae7d595c);
windows_core::imp::interface_hierarchy!(IDebugHostModuleSignature, windows_core::IUnknown);
impl IDebugHostModuleSignature {
    pub unsafe fn IsMatch<P0>(&self, pmodule: P0) -> windows_core::Result<bool>
    where
        P0: windows_core::Param<IDebugHostModule>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsMatch)(windows_core::Interface::as_raw(self), pmodule.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostModuleSignature_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IsMatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
pub trait IDebugHostModuleSignature_Impl: windows_core::IUnknownImpl {
    fn IsMatch(&self, pmodule: windows_core::Ref<'_, IDebugHostModule>) -> windows_core::Result<bool>;
}
impl IDebugHostModuleSignature_Vtbl {
    pub const fn new<Identity: IDebugHostModuleSignature_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsMatch<Identity: IDebugHostModuleSignature_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmodule: *mut core::ffi::c_void, ismatch: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostModuleSignature_Impl::IsMatch(this, core::mem::transmute_copy(&pmodule)) {
                    Ok(ok__) => {
                        ismatch.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), IsMatch: IsMatch::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostModuleSignature as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostModuleSignature {}
windows_core::imp::define_interface!(IDebugHostPublic, IDebugHostPublic_Vtbl, 0x6c597ac9_fb4d_4f6d_9f39_22488539f8f4);
impl core::ops::Deref for IDebugHostPublic {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostPublic, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostPublic {
    pub unsafe fn GetLocationKind(&self) -> windows_core::Result<LocationKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocationKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLocation(&self) -> windows_core::Result<Location> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostPublic_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLocationKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut LocationKind) -> windows_core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location) -> windows_core::HRESULT,
}
pub trait IDebugHostPublic_Impl: IDebugHostSymbol_Impl {
    fn GetLocationKind(&self) -> windows_core::Result<LocationKind>;
    fn GetLocation(&self) -> windows_core::Result<Location>;
}
impl IDebugHostPublic_Vtbl {
    pub const fn new<Identity: IDebugHostPublic_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetLocationKind<Identity: IDebugHostPublic_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationkind: *mut LocationKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostPublic_Impl::GetLocationKind(this) {
                    Ok(ok__) => {
                        locationkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLocation<Identity: IDebugHostPublic_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, location: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostPublic_Impl::GetLocation(this) {
                    Ok(ok__) => {
                        location.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(),
            GetLocationKind: GetLocationKind::<Identity, OFFSET>,
            GetLocation: GetLocation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostPublic as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostPublic {}
windows_core::imp::define_interface!(IDebugHostScriptHost, IDebugHostScriptHost_Vtbl, 0xb70334a4_b92c_4570_93a1_d3eb686649a0);
windows_core::imp::interface_hierarchy!(IDebugHostScriptHost, windows_core::IUnknown);
impl IDebugHostScriptHost {
    pub unsafe fn CreateContext<P0>(&self, script: P0) -> windows_core::Result<IDataModelScriptHostContext>
    where
        P0: windows_core::Param<IDataModelScript>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateContext)(windows_core::Interface::as_raw(self), script.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostScriptHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostScriptHost_Impl: windows_core::IUnknownImpl {
    fn CreateContext(&self, script: windows_core::Ref<'_, IDataModelScript>) -> windows_core::Result<IDataModelScriptHostContext>;
}
impl IDebugHostScriptHost_Vtbl {
    pub const fn new<Identity: IDebugHostScriptHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateContext<Identity: IDebugHostScriptHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, script: *mut core::ffi::c_void, scriptcontext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostScriptHost_Impl::CreateContext(this, core::mem::transmute_copy(&script)) {
                    Ok(ok__) => {
                        scriptcontext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateContext: CreateContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostScriptHost as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostScriptHost {}
windows_core::imp::define_interface!(IDebugHostStatus, IDebugHostStatus_Vtbl, 0x4f3e1ce2_86b2_4c7a_9c65_d0a9d0eecf44);
windows_core::imp::interface_hierarchy!(IDebugHostStatus, windows_core::IUnknown);
impl IDebugHostStatus {
    pub unsafe fn PollUserInterrupt(&self) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PollUserInterrupt)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostStatus_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub PollUserInterrupt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
pub trait IDebugHostStatus_Impl: windows_core::IUnknownImpl {
    fn PollUserInterrupt(&self) -> windows_core::Result<bool>;
}
impl IDebugHostStatus_Vtbl {
    pub const fn new<Identity: IDebugHostStatus_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn PollUserInterrupt<Identity: IDebugHostStatus_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, interruptrequested: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostStatus_Impl::PollUserInterrupt(this) {
                    Ok(ok__) => {
                        interruptrequested.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PollUserInterrupt: PollUserInterrupt::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostStatus as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostStatus {}
windows_core::imp::define_interface!(IDebugHostSymbol, IDebugHostSymbol_Vtbl, 0x0f819103_87de_4e96_8277_e05cd441fb22);
windows_core::imp::interface_hierarchy!(IDebugHostSymbol, windows_core::IUnknown);
impl IDebugHostSymbol {
    pub unsafe fn GetContext(&self) -> windows_core::Result<IDebugHostContext> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateChildren<P1>(&self, kind: SymbolKind, name: P1) -> windows_core::Result<IDebugHostSymbolEnumerator>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateChildren)(windows_core::Interface::as_raw(self), kind, name.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetSymbolKind(&self) -> windows_core::Result<SymbolKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetType(&self) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetContainingModule(&self) -> windows_core::Result<IDebugHostModule> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContainingModule)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CompareAgainst<P0>(&self, pcomparisonsymbol: P0, comparisonflags: u32) -> windows_core::Result<bool>
    where
        P0: windows_core::Param<IDebugHostSymbol>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CompareAgainst)(windows_core::Interface::as_raw(self), pcomparisonsymbol.param().abi(), comparisonflags, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbol_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateChildren: unsafe extern "system" fn(*mut core::ffi::c_void, SymbolKind, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSymbolKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SymbolKind) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetContainingModule: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CompareAgainst: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut bool) -> windows_core::HRESULT,
}
pub trait IDebugHostSymbol_Impl: windows_core::IUnknownImpl {
    fn GetContext(&self) -> windows_core::Result<IDebugHostContext>;
    fn EnumerateChildren(&self, kind: SymbolKind, name: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostSymbolEnumerator>;
    fn GetSymbolKind(&self) -> windows_core::Result<SymbolKind>;
    fn GetName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetType(&self) -> windows_core::Result<IDebugHostType>;
    fn GetContainingModule(&self) -> windows_core::Result<IDebugHostModule>;
    fn CompareAgainst(&self, pcomparisonsymbol: windows_core::Ref<'_, IDebugHostSymbol>, comparisonflags: u32) -> windows_core::Result<bool>;
}
impl IDebugHostSymbol_Vtbl {
    pub const fn new<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetContext<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::GetContext(this) {
                    Ok(ok__) => {
                        context.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateChildren<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: SymbolKind, name: windows_core::PCWSTR, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::EnumerateChildren(this, core::mem::transmute_copy(&kind), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolKind<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: *mut SymbolKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::GetSymbolKind(this) {
                    Ok(ok__) => {
                        kind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetName<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbolname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::GetName(this) {
                    Ok(ok__) => {
                        symbolname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetType<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::GetType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetContainingModule<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, containingmodule: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::GetContainingModule(this) {
                    Ok(ok__) => {
                        containingmodule.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CompareAgainst<Identity: IDebugHostSymbol_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcomparisonsymbol: *mut core::ffi::c_void, comparisonflags: u32, pmatches: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol_Impl::CompareAgainst(this, core::mem::transmute_copy(&pcomparisonsymbol), core::mem::transmute_copy(&comparisonflags)) {
                    Ok(ok__) => {
                        pmatches.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetContext: GetContext::<Identity, OFFSET>,
            EnumerateChildren: EnumerateChildren::<Identity, OFFSET>,
            GetSymbolKind: GetSymbolKind::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetType: GetType::<Identity, OFFSET>,
            GetContainingModule: GetContainingModule::<Identity, OFFSET>,
            CompareAgainst: CompareAgainst::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostSymbol {}
windows_core::imp::define_interface!(IDebugHostSymbol2, IDebugHostSymbol2_Vtbl, 0x21515b67_6720_4257_8a68_077dc944471c);
impl core::ops::Deref for IDebugHostSymbol2 {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostSymbol2, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostSymbol2 {
    pub unsafe fn GetLanguage(&self) -> windows_core::Result<LanguageKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLanguage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbol2_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetLanguage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut LanguageKind) -> windows_core::HRESULT,
}
pub trait IDebugHostSymbol2_Impl: IDebugHostSymbol_Impl {
    fn GetLanguage(&self) -> windows_core::Result<LanguageKind>;
}
impl IDebugHostSymbol2_Vtbl {
    pub const fn new<Identity: IDebugHostSymbol2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetLanguage<Identity: IDebugHostSymbol2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkind: *mut LanguageKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbol2_Impl::GetLanguage(this) {
                    Ok(ok__) => {
                        pkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(), GetLanguage: GetLanguage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostSymbol2 as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostSymbol2 {}
windows_core::imp::define_interface!(IDebugHostSymbolEnumerator, IDebugHostSymbolEnumerator_Vtbl, 0x28d96c86_10a3_4976_b14e_eaef4790aa1f);
windows_core::imp::interface_hierarchy!(IDebugHostSymbolEnumerator, windows_core::IUnknown);
impl IDebugHostSymbolEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self) -> windows_core::Result<IDebugHostSymbol> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbolEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostSymbolEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self) -> windows_core::Result<IDebugHostSymbol>;
}
impl IDebugHostSymbolEnumerator_Vtbl {
    pub const fn new<Identity: IDebugHostSymbolEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IDebugHostSymbolEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostSymbolEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IDebugHostSymbolEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbolEnumerator_Impl::GetNext(this) {
                    Ok(ok__) => {
                        symbol.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostSymbolEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostSymbolEnumerator {}
windows_core::imp::define_interface!(IDebugHostSymbols, IDebugHostSymbols_Vtbl, 0x854fd751_c2e1_4eb2_b525_6619cb97a588);
windows_core::imp::interface_hierarchy!(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::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateModuleSignature)(windows_core::Interface::as_raw(self), pwszmodulename.param().abi(), pwszminversion.param().abi(), pwszmaxversion.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateTypeSignature<P0, P1>(&self, signaturespecification: P0, module: P1) -> windows_core::Result<IDebugHostTypeSignature>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IDebugHostModule>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypeSignature)(windows_core::Interface::as_raw(self), signaturespecification.param().abi(), module.param().abi(), &mut result__).and_then(|| windows_core::Type::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::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateTypeSignatureForModuleRange)(windows_core::Interface::as_raw(self), signaturespecification.param().abi(), modulename.param().abi(), minversion.param().abi(), maxversion.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateModules<P0>(&self, context: P0) -> windows_core::Result<IDebugHostSymbolEnumerator>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateModules)(windows_core::Interface::as_raw(self), context.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindModuleByName<P0, P1>(&self, context: P0, modulename: P1) -> windows_core::Result<IDebugHostModule>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindModuleByName)(windows_core::Interface::as_raw(self), context.param().abi(), modulename.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindModuleByLocation<P0>(&self, context: P0, modulelocation: Location) -> windows_core::Result<IDebugHostModule>
    where
        P0: windows_core::Param<IDebugHostContext>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindModuleByLocation)(windows_core::Interface::as_raw(self), context.param().abi(), core::mem::transmute(modulelocation), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetMostDerivedObject<P0, P2>(&self, pcontext: P0, location: Location, objecttype: P2, derivedlocation: *mut Location, derivedtype: *mut Option<IDebugHostType>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostContext>,
        P2: windows_core::Param<IDebugHostType>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetMostDerivedObject)(windows_core::Interface::as_raw(self), pcontext.param().abi(), core::mem::transmute(location), objecttype.param().abi(), derivedlocation as _, core::mem::transmute(derivedtype)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostSymbols_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateModuleSignature: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateTypeSignature: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateTypeSignatureForModuleRange: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindModuleByName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindModuleByLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetMostDerivedObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, Location, *mut core::ffi::c_void, *mut Location, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostSymbols_Impl: windows_core::IUnknownImpl {
    fn CreateModuleSignature(&self, pwszmodulename: &windows_core::PCWSTR, pwszminversion: &windows_core::PCWSTR, pwszmaxversion: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostModuleSignature>;
    fn CreateTypeSignature(&self, signaturespecification: &windows_core::PCWSTR, module: windows_core::Ref<'_, IDebugHostModule>) -> windows_core::Result<IDebugHostTypeSignature>;
    fn CreateTypeSignatureForModuleRange(&self, signaturespecification: &windows_core::PCWSTR, modulename: &windows_core::PCWSTR, minversion: &windows_core::PCWSTR, maxversion: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostTypeSignature>;
    fn EnumerateModules(&self, context: windows_core::Ref<'_, IDebugHostContext>) -> windows_core::Result<IDebugHostSymbolEnumerator>;
    fn FindModuleByName(&self, context: windows_core::Ref<'_, IDebugHostContext>, modulename: &windows_core::PCWSTR) -> windows_core::Result<IDebugHostModule>;
    fn FindModuleByLocation(&self, context: windows_core::Ref<'_, IDebugHostContext>, modulelocation: &Location) -> windows_core::Result<IDebugHostModule>;
    fn GetMostDerivedObject(&self, pcontext: windows_core::Ref<'_, IDebugHostContext>, location: &Location, objecttype: windows_core::Ref<'_, IDebugHostType>, derivedlocation: *mut Location, derivedtype: windows_core::OutRef<'_, IDebugHostType>) -> windows_core::Result<()>;
}
impl IDebugHostSymbols_Vtbl {
    pub const fn new<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateModuleSignature<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::CreateModuleSignature(this, core::mem::transmute(&pwszmodulename), core::mem::transmute(&pwszminversion), core::mem::transmute(&pwszmaxversion)) {
                    Ok(ok__) => {
                        ppmodulesignature.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypeSignature<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::CreateTypeSignature(this, core::mem::transmute(&signaturespecification), core::mem::transmute_copy(&module)) {
                    Ok(ok__) => {
                        typesignature.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateTypeSignatureForModuleRange<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::CreateTypeSignatureForModuleRange(this, core::mem::transmute(&signaturespecification), core::mem::transmute(&modulename), core::mem::transmute(&minversion), core::mem::transmute(&maxversion)) {
                    Ok(ok__) => {
                        typesignature.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateModules<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, moduleenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::EnumerateModules(this, core::mem::transmute_copy(&context)) {
                    Ok(ok__) => {
                        moduleenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindModuleByName<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::FindModuleByName(this, core::mem::transmute_copy(&context), core::mem::transmute(&modulename)) {
                    Ok(ok__) => {
                        module.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindModuleByLocation<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void, modulelocation: Location, module: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostSymbols_Impl::FindModuleByLocation(this, core::mem::transmute_copy(&context), core::mem::transmute(&modulelocation)) {
                    Ok(ok__) => {
                        module.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMostDerivedObject<Identity: IDebugHostSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostSymbols_Impl::GetMostDerivedObject(this, core::mem::transmute_copy(&pcontext), core::mem::transmute(&location), core::mem::transmute_copy(&objecttype), core::mem::transmute_copy(&derivedlocation), core::mem::transmute_copy(&derivedtype)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateModuleSignature: CreateModuleSignature::<Identity, OFFSET>,
            CreateTypeSignature: CreateTypeSignature::<Identity, OFFSET>,
            CreateTypeSignatureForModuleRange: CreateTypeSignatureForModuleRange::<Identity, OFFSET>,
            EnumerateModules: EnumerateModules::<Identity, OFFSET>,
            FindModuleByName: FindModuleByName::<Identity, OFFSET>,
            FindModuleByLocation: FindModuleByLocation::<Identity, OFFSET>,
            GetMostDerivedObject: GetMostDerivedObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostSymbols as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostSymbols {}
windows_core::imp::define_interface!(IDebugHostType, IDebugHostType_Vtbl, 0x3aadc353_2b14_4abb_9893_5e03458e07ee);
impl core::ops::Deref for IDebugHostType {
    type Target = IDebugHostSymbol;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostType, windows_core::IUnknown, IDebugHostSymbol);
impl IDebugHostType {
    pub unsafe fn GetTypeKind(&self) -> windows_core::Result<TypeKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSize(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBaseType(&self) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBaseType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetHashCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHashCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetIntrinsicType(&self, intrinsickind: Option<*mut IntrinsicKind>, carriertype: Option<*mut u16>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIntrinsicType)(windows_core::Interface::as_raw(self), intrinsickind.unwrap_or(core::mem::zeroed()) as _, carriertype.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetBitField(&self, lsboffield: *mut u32, lengthoffield: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBitField)(windows_core::Interface::as_raw(self), lsboffield as _, lengthoffield as _).ok() }
    }
    pub unsafe fn GetPointerKind(&self) -> windows_core::Result<PointerKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPointerKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMemberType(&self) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMemberType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreatePointerTo(&self, kind: PointerKind) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreatePointerTo)(windows_core::Interface::as_raw(self), kind, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetArrayDimensionality(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetArrayDimensionality)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetArrayDimensions(&self, pdimensions: &mut [ArrayDimension]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetArrayDimensions)(windows_core::Interface::as_raw(self), pdimensions.len().try_into().unwrap(), core::mem::transmute(pdimensions.as_ptr())).ok() }
    }
    pub unsafe fn CreateArrayOf(&self, pdimensions: &[ArrayDimension]) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateArrayOf)(windows_core::Interface::as_raw(self), pdimensions.len().try_into().unwrap(), core::mem::transmute(pdimensions.as_ptr()), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFunctionCallingConvention(&self) -> windows_core::Result<CallingConventionKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionCallingConvention)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFunctionReturnType(&self) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionReturnType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFunctionParameterTypeCount(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionParameterTypeCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFunctionParameterTypeAt(&self, i: u64) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionParameterTypeAt)(windows_core::Interface::as_raw(self), i, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn IsGeneric(&self) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsGeneric)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetGenericArgumentCount(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetGenericArgumentCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetGenericArgumentAt(&self, i: u64) -> windows_core::Result<IDebugHostSymbol> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetGenericArgumentAt)(windows_core::Interface::as_raw(self), i, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostType_Vtbl {
    pub base__: IDebugHostSymbol_Vtbl,
    pub GetTypeKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut TypeKind) -> windows_core::HRESULT,
    pub GetSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetBaseType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetHashCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetIntrinsicType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut IntrinsicKind, *mut u16) -> windows_core::HRESULT,
    pub GetBitField: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetPointerKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PointerKind) -> windows_core::HRESULT,
    pub GetMemberType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreatePointerTo: unsafe extern "system" fn(*mut core::ffi::c_void, PointerKind, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetArrayDimensionality: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetArrayDimensions: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut ArrayDimension) -> windows_core::HRESULT,
    pub CreateArrayOf: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const ArrayDimension, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFunctionCallingConvention: unsafe extern "system" fn(*mut core::ffi::c_void, *mut CallingConventionKind) -> windows_core::HRESULT,
    pub GetFunctionReturnType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFunctionParameterTypeCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetFunctionParameterTypeAt: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsGeneric: unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub GetGenericArgumentCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetGenericArgumentAt: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostType_Impl: IDebugHostSymbol_Impl {
    fn GetTypeKind(&self) -> windows_core::Result<TypeKind>;
    fn GetSize(&self) -> windows_core::Result<u64>;
    fn GetBaseType(&self) -> windows_core::Result<IDebugHostType>;
    fn GetHashCode(&self) -> windows_core::Result<u32>;
    fn GetIntrinsicType(&self, intrinsickind: *mut IntrinsicKind, carriertype: *mut u16) -> windows_core::Result<()>;
    fn GetBitField(&self, lsboffield: *mut u32, lengthoffield: *mut u32) -> windows_core::Result<()>;
    fn GetPointerKind(&self) -> windows_core::Result<PointerKind>;
    fn GetMemberType(&self) -> windows_core::Result<IDebugHostType>;
    fn CreatePointerTo(&self, kind: PointerKind) -> windows_core::Result<IDebugHostType>;
    fn GetArrayDimensionality(&self) -> windows_core::Result<u64>;
    fn GetArrayDimensions(&self, dimensions: u64, pdimensions: *mut ArrayDimension) -> windows_core::Result<()>;
    fn CreateArrayOf(&self, dimensions: u64, pdimensions: *const ArrayDimension) -> windows_core::Result<IDebugHostType>;
    fn GetFunctionCallingConvention(&self) -> windows_core::Result<CallingConventionKind>;
    fn GetFunctionReturnType(&self) -> windows_core::Result<IDebugHostType>;
    fn GetFunctionParameterTypeCount(&self) -> windows_core::Result<u64>;
    fn GetFunctionParameterTypeAt(&self, i: u64) -> windows_core::Result<IDebugHostType>;
    fn IsGeneric(&self) -> windows_core::Result<bool>;
    fn GetGenericArgumentCount(&self) -> windows_core::Result<u64>;
    fn GetGenericArgumentAt(&self, i: u64) -> windows_core::Result<IDebugHostSymbol>;
}
impl IDebugHostType_Vtbl {
    pub const fn new<Identity: IDebugHostType_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetTypeKind<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: *mut TypeKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetTypeKind(this) {
                    Ok(ok__) => {
                        kind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSize<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetSize(this) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBaseType<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, basetype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetBaseType(this) {
                    Ok(ok__) => {
                        basetype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetHashCode<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hashcode: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetHashCode(this) {
                    Ok(ok__) => {
                        hashcode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIntrinsicType<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, intrinsickind: *mut IntrinsicKind, carriertype: *mut u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostType_Impl::GetIntrinsicType(this, core::mem::transmute_copy(&intrinsickind), core::mem::transmute_copy(&carriertype)).into()
            }
        }
        unsafe extern "system" fn GetBitField<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lsboffield: *mut u32, lengthoffield: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostType_Impl::GetBitField(this, core::mem::transmute_copy(&lsboffield), core::mem::transmute_copy(&lengthoffield)).into()
            }
        }
        unsafe extern "system" fn GetPointerKind<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pointerkind: *mut PointerKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetPointerKind(this) {
                    Ok(ok__) => {
                        pointerkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMemberType<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, membertype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetMemberType(this) {
                    Ok(ok__) => {
                        membertype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreatePointerTo<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: PointerKind, newtype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::CreatePointerTo(this, core::mem::transmute_copy(&kind)) {
                    Ok(ok__) => {
                        newtype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetArrayDimensionality<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, arraydimensionality: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetArrayDimensionality(this) {
                    Ok(ok__) => {
                        arraydimensionality.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetArrayDimensions<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dimensions: u64, pdimensions: *mut ArrayDimension) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostType_Impl::GetArrayDimensions(this, core::mem::transmute_copy(&dimensions), core::mem::transmute_copy(&pdimensions)).into()
            }
        }
        unsafe extern "system" fn CreateArrayOf<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dimensions: u64, pdimensions: *const ArrayDimension, newtype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::CreateArrayOf(this, core::mem::transmute_copy(&dimensions), core::mem::transmute_copy(&pdimensions)) {
                    Ok(ok__) => {
                        newtype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionCallingConvention<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, conventionkind: *mut CallingConventionKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetFunctionCallingConvention(this) {
                    Ok(ok__) => {
                        conventionkind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionReturnType<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, returntype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetFunctionReturnType(this) {
                    Ok(ok__) => {
                        returntype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionParameterTypeCount<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetFunctionParameterTypeCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionParameterTypeAt<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, i: u64, parametertype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetFunctionParameterTypeAt(this, core::mem::transmute_copy(&i)) {
                    Ok(ok__) => {
                        parametertype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsGeneric<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, isgeneric: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::IsGeneric(this) {
                    Ok(ok__) => {
                        isgeneric.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetGenericArgumentCount<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, argcount: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetGenericArgumentCount(this) {
                    Ok(ok__) => {
                        argcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetGenericArgumentAt<Identity: IDebugHostType_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, i: u64, argument: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType_Impl::GetGenericArgumentAt(this, core::mem::transmute_copy(&i)) {
                    Ok(ok__) => {
                        argument.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostSymbol_Vtbl::new::<Identity, OFFSET>(),
            GetTypeKind: GetTypeKind::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetBaseType: GetBaseType::<Identity, OFFSET>,
            GetHashCode: GetHashCode::<Identity, OFFSET>,
            GetIntrinsicType: GetIntrinsicType::<Identity, OFFSET>,
            GetBitField: GetBitField::<Identity, OFFSET>,
            GetPointerKind: GetPointerKind::<Identity, OFFSET>,
            GetMemberType: GetMemberType::<Identity, OFFSET>,
            CreatePointerTo: CreatePointerTo::<Identity, OFFSET>,
            GetArrayDimensionality: GetArrayDimensionality::<Identity, OFFSET>,
            GetArrayDimensions: GetArrayDimensions::<Identity, OFFSET>,
            CreateArrayOf: CreateArrayOf::<Identity, OFFSET>,
            GetFunctionCallingConvention: GetFunctionCallingConvention::<Identity, OFFSET>,
            GetFunctionReturnType: GetFunctionReturnType::<Identity, OFFSET>,
            GetFunctionParameterTypeCount: GetFunctionParameterTypeCount::<Identity, OFFSET>,
            GetFunctionParameterTypeAt: GetFunctionParameterTypeAt::<Identity, OFFSET>,
            IsGeneric: IsGeneric::<Identity, OFFSET>,
            GetGenericArgumentCount: GetGenericArgumentCount::<Identity, OFFSET>,
            GetGenericArgumentAt: GetGenericArgumentAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostType as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostType {}
windows_core::imp::define_interface!(IDebugHostType2, IDebugHostType2_Vtbl, 0xb28632b9_8506_4676_87ce_8f7e05e59876);
impl core::ops::Deref for IDebugHostType2 {
    type Target = IDebugHostType;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDebugHostType2, windows_core::IUnknown, IDebugHostSymbol, IDebugHostType);
impl IDebugHostType2 {
    pub unsafe fn IsTypedef(&self) -> windows_core::Result<bool> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsTypedef)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypedefBaseType(&self) -> windows_core::Result<IDebugHostType2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypedefBaseType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetTypedefFinalBaseType(&self) -> windows_core::Result<IDebugHostType2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypedefFinalBaseType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFunctionVarArgsKind(&self) -> windows_core::Result<VarArgsKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionVarArgsKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFunctionInstancePointerType(&self) -> windows_core::Result<IDebugHostType2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFunctionInstancePointerType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostType2_Vtbl {
    pub base__: IDebugHostType_Vtbl,
    pub IsTypedef: unsafe extern "system" fn(*mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub GetTypedefBaseType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTypedefFinalBaseType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFunctionVarArgsKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut VarArgsKind) -> windows_core::HRESULT,
    pub GetFunctionInstancePointerType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugHostType2_Impl: IDebugHostType_Impl {
    fn IsTypedef(&self) -> windows_core::Result<bool>;
    fn GetTypedefBaseType(&self) -> windows_core::Result<IDebugHostType2>;
    fn GetTypedefFinalBaseType(&self) -> windows_core::Result<IDebugHostType2>;
    fn GetFunctionVarArgsKind(&self) -> windows_core::Result<VarArgsKind>;
    fn GetFunctionInstancePointerType(&self) -> windows_core::Result<IDebugHostType2>;
}
impl IDebugHostType2_Vtbl {
    pub const fn new<Identity: IDebugHostType2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsTypedef<Identity: IDebugHostType2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, istypedef: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType2_Impl::IsTypedef(this) {
                    Ok(ok__) => {
                        istypedef.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypedefBaseType<Identity: IDebugHostType2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, basetype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType2_Impl::GetTypedefBaseType(this) {
                    Ok(ok__) => {
                        basetype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypedefFinalBaseType<Identity: IDebugHostType2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, finalbasetype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType2_Impl::GetTypedefFinalBaseType(this) {
                    Ok(ok__) => {
                        finalbasetype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionVarArgsKind<Identity: IDebugHostType2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, varargskind: *mut VarArgsKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType2_Impl::GetFunctionVarArgsKind(this) {
                    Ok(ok__) => {
                        varargskind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFunctionInstancePointerType<Identity: IDebugHostType2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instancepointertype: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostType2_Impl::GetFunctionInstancePointerType(this) {
                    Ok(ok__) => {
                        instancepointertype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDebugHostType_Vtbl::new::<Identity, OFFSET>(),
            IsTypedef: IsTypedef::<Identity, OFFSET>,
            GetTypedefBaseType: GetTypedefBaseType::<Identity, OFFSET>,
            GetTypedefFinalBaseType: GetTypedefFinalBaseType::<Identity, OFFSET>,
            GetFunctionVarArgsKind: GetFunctionVarArgsKind::<Identity, OFFSET>,
            GetFunctionInstancePointerType: GetFunctionInstancePointerType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostType2 as windows_core::Interface>::IID || iid == &<IDebugHostSymbol as windows_core::Interface>::IID || iid == &<IDebugHostType as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostType2 {}
windows_core::imp::define_interface!(IDebugHostTypeSignature, IDebugHostTypeSignature_Vtbl, 0x3aadc353_2b14_4abb_9893_5e03458e07ee);
windows_core::imp::interface_hierarchy!(IDebugHostTypeSignature, windows_core::IUnknown);
impl IDebugHostTypeSignature {
    pub unsafe fn GetHashCode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHashCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsMatch<P0>(&self, r#type: P0, ismatch: *mut bool, wildcardmatches: Option<*mut Option<IDebugHostSymbolEnumerator>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IDebugHostType>,
    {
        unsafe { (windows_core::Interface::vtable(self).IsMatch)(windows_core::Interface::as_raw(self), r#type.param().abi(), ismatch as _, wildcardmatches.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn CompareAgainst<P0>(&self, typesignature: P0) -> windows_core::Result<SignatureComparison>
    where
        P0: windows_core::Param<IDebugHostTypeSignature>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CompareAgainst)(windows_core::Interface::as_raw(self), typesignature.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugHostTypeSignature_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetHashCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsMatch: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut bool, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CompareAgainst: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut SignatureComparison) -> windows_core::HRESULT,
}
pub trait IDebugHostTypeSignature_Impl: windows_core::IUnknownImpl {
    fn GetHashCode(&self) -> windows_core::Result<u32>;
    fn IsMatch(&self, r#type: windows_core::Ref<'_, IDebugHostType>, ismatch: *mut bool, wildcardmatches: windows_core::OutRef<'_, IDebugHostSymbolEnumerator>) -> windows_core::Result<()>;
    fn CompareAgainst(&self, typesignature: windows_core::Ref<'_, IDebugHostTypeSignature>) -> windows_core::Result<SignatureComparison>;
}
impl IDebugHostTypeSignature_Vtbl {
    pub const fn new<Identity: IDebugHostTypeSignature_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetHashCode<Identity: IDebugHostTypeSignature_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hashcode: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostTypeSignature_Impl::GetHashCode(this) {
                    Ok(ok__) => {
                        hashcode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsMatch<Identity: IDebugHostTypeSignature_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugHostTypeSignature_Impl::IsMatch(this, core::mem::transmute_copy(&r#type), core::mem::transmute_copy(&ismatch), core::mem::transmute_copy(&wildcardmatches)).into()
            }
        }
        unsafe extern "system" fn CompareAgainst<Identity: IDebugHostTypeSignature_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, typesignature: *mut core::ffi::c_void, result: *mut SignatureComparison) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugHostTypeSignature_Impl::CompareAgainst(this, core::mem::transmute_copy(&typesignature)) {
                    Ok(ok__) => {
                        result.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHashCode: GetHashCode::<Identity, OFFSET>,
            IsMatch: IsMatch::<Identity, OFFSET>,
            CompareAgainst: CompareAgainst::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugHostTypeSignature as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugHostTypeSignature {}
windows_core::imp::define_interface!(IDebugInputCallbacks, IDebugInputCallbacks_Vtbl, 0x9f50e42c_f136_499e_9a97_73036c94ed2d);
windows_core::imp::interface_hierarchy!(IDebugInputCallbacks, windows_core::IUnknown);
impl IDebugInputCallbacks {
    pub unsafe fn StartInput(&self, buffersize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StartInput)(windows_core::Interface::as_raw(self), buffersize).ok() }
    }
    pub unsafe fn EndInput(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndInput)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugInputCallbacks_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartInput: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub EndInput: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDebugInputCallbacks_Impl: windows_core::IUnknownImpl {
    fn StartInput(&self, buffersize: u32) -> windows_core::Result<()>;
    fn EndInput(&self) -> windows_core::Result<()>;
}
impl IDebugInputCallbacks_Vtbl {
    pub const fn new<Identity: IDebugInputCallbacks_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn StartInput<Identity: IDebugInputCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffersize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugInputCallbacks_Impl::StartInput(this, core::mem::transmute_copy(&buffersize)).into()
            }
        }
        unsafe extern "system" fn EndInput<Identity: IDebugInputCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugInputCallbacks_Impl::EndInput(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartInput: StartInput::<Identity, OFFSET>,
            EndInput: EndInput::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugInputCallbacks as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugInputCallbacks {}
windows_core::imp::define_interface!(IDebugOutputCallbacks, IDebugOutputCallbacks_Vtbl, 0x4bf58045_d654_4c40_b0af_683090f356dc);
windows_core::imp::interface_hierarchy!(IDebugOutputCallbacks, windows_core::IUnknown);
impl IDebugOutputCallbacks {
    pub unsafe fn Output<P1>(&self, mask: u32, text: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, text.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacks_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
}
pub trait IDebugOutputCallbacks_Impl: windows_core::IUnknownImpl {
    fn Output(&self, mask: u32, text: &windows_core::PCSTR) -> windows_core::Result<()>;
}
impl IDebugOutputCallbacks_Vtbl {
    pub const fn new<Identity: IDebugOutputCallbacks_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Output<Identity: IDebugOutputCallbacks_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, text: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugOutputCallbacks_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&text)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Output: Output::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugOutputCallbacks as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugOutputCallbacks {}
windows_core::imp::define_interface!(IDebugOutputCallbacks2, IDebugOutputCallbacks2_Vtbl, 0x67721fe9_56d2_4a44_a325_2b65513ce6eb);
windows_core::imp::interface_hierarchy!(IDebugOutputCallbacks2, windows_core::IUnknown);
impl IDebugOutputCallbacks2 {
    pub unsafe fn Output<P1>(&self, mask: u32, text: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, text.param().abi()).ok() }
    }
    pub unsafe fn GetInterestMask(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInterestMask)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Output2<P3>(&self, which: u32, flags: u32, arg: u64, text: P3) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output2)(windows_core::Interface::as_raw(self), which, flags, arg, text.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacks2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetInterestMask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Output2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugOutputCallbacks2_Impl: windows_core::IUnknownImpl {
    fn Output(&self, mask: u32, text: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetInterestMask(&self) -> windows_core::Result<u32>;
    fn Output2(&self, which: u32, flags: u32, arg: u64, text: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugOutputCallbacks2_Vtbl {
    pub const fn new<Identity: IDebugOutputCallbacks2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Output<Identity: IDebugOutputCallbacks2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, text: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugOutputCallbacks2_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&text)).into()
            }
        }
        unsafe extern "system" fn GetInterestMask<Identity: IDebugOutputCallbacks2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugOutputCallbacks2_Impl::GetInterestMask(this) {
                    Ok(ok__) => {
                        mask.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Output2<Identity: IDebugOutputCallbacks2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, flags: u32, arg: u64, text: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugOutputCallbacks2_Impl::Output2(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&arg), core::mem::transmute(&text)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Output: Output::<Identity, OFFSET>,
            GetInterestMask: GetInterestMask::<Identity, OFFSET>,
            Output2: Output2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugOutputCallbacks2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugOutputCallbacks2 {}
windows_core::imp::define_interface!(IDebugOutputCallbacksWide, IDebugOutputCallbacksWide_Vtbl, 0x4c7fd663_c394_4e26_8ef1_34ad5ed3764c);
windows_core::imp::interface_hierarchy!(IDebugOutputCallbacksWide, windows_core::IUnknown);
impl IDebugOutputCallbacksWide {
    pub unsafe fn Output<P1>(&self, mask: u32, text: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Output)(windows_core::Interface::as_raw(self), mask, text.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputCallbacksWide_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Output: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugOutputCallbacksWide_Impl: windows_core::IUnknownImpl {
    fn Output(&self, mask: u32, text: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugOutputCallbacksWide_Vtbl {
    pub const fn new<Identity: IDebugOutputCallbacksWide_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Output<Identity: IDebugOutputCallbacksWide_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mask: u32, text: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugOutputCallbacksWide_Impl::Output(this, core::mem::transmute_copy(&mask), core::mem::transmute(&text)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Output: Output::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugOutputCallbacksWide as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugOutputCallbacksWide {}
windows_core::imp::define_interface!(IDebugOutputStream, IDebugOutputStream_Vtbl, 0x7782d8f2_2b85_4059_ab88_28ceddca1c80);
windows_core::imp::interface_hierarchy!(IDebugOutputStream, windows_core::IUnknown);
impl IDebugOutputStream {
    pub unsafe fn Write<P0>(&self, psz: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Write)(windows_core::Interface::as_raw(self), psz.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugOutputStream_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Write: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugOutputStream_Impl: windows_core::IUnknownImpl {
    fn Write(&self, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugOutputStream_Vtbl {
    pub const fn new<Identity: IDebugOutputStream_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Write<Identity: IDebugOutputStream_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psz: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugOutputStream_Impl::Write(this, core::mem::transmute(&psz)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Write: Write::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugOutputStream as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugOutputStream {}
windows_core::imp::define_interface!(IDebugPlmClient, IDebugPlmClient_Vtbl, 0xa02b66c4_aea3_4234_a9f7_fe4c383d4e29);
windows_core::imp::interface_hierarchy!(IDebugPlmClient, windows_core::IUnknown);
impl IDebugPlmClient {
    pub unsafe fn LaunchPlmPackageForDebugWide<P2, P3, P4>(&self, server: u64, timeout: u32, packagefullname: P2, appname: P3, arguments: P4, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(windows_core::Interface::as_raw(self), server, timeout, packagefullname.param().abi(), appname.param().abi(), arguments.param().abi(), processid as _, threadid as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugPlmClient_Impl: windows_core::IUnknownImpl {
    fn LaunchPlmPackageForDebugWide(&self, server: u64, timeout: u32, packagefullname: &windows_core::PCWSTR, appname: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>;
}
impl IDebugPlmClient_Vtbl {
    pub const fn new<Identity: IDebugPlmClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LaunchPlmPackageForDebugWide<Identity: IDebugPlmClient_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient_Impl::LaunchPlmPackageForDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&timeout), core::mem::transmute(&packagefullname), core::mem::transmute(&appname), core::mem::transmute(&arguments), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), LaunchPlmPackageForDebugWide: LaunchPlmPackageForDebugWide::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugPlmClient as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugPlmClient {}
windows_core::imp::define_interface!(IDebugPlmClient2, IDebugPlmClient2_Vtbl, 0x597c980d_e7bd_4309_962c_9d9b69a7372c);
windows_core::imp::interface_hierarchy!(IDebugPlmClient2, windows_core::IUnknown);
impl IDebugPlmClient2 {
    pub unsafe fn LaunchPlmPackageForDebugWide<P2, P3, P4>(&self, server: u64, timeout: u32, packagefullname: P2, appname: P3, arguments: P4, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(windows_core::Interface::as_raw(self), server, timeout, packagefullname.param().abi(), appname.param().abi(), arguments.param().abi(), processid as _, threadid as _).ok() }
    }
    pub unsafe fn LaunchPlmBgTaskForDebugWide<P2, P3>(&self, server: u64, timeout: u32, packagefullname: P2, backgroundtaskid: P3, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchPlmBgTaskForDebugWide)(windows_core::Interface::as_raw(self), server, timeout, packagefullname.param().abi(), backgroundtaskid.param().abi(), processid as _, threadid as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub LaunchPlmBgTaskForDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugPlmClient2_Impl: windows_core::IUnknownImpl {
    fn LaunchPlmPackageForDebugWide(&self, server: u64, timeout: u32, packagefullname: &windows_core::PCWSTR, appname: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>;
    fn LaunchPlmBgTaskForDebugWide(&self, server: u64, timeout: u32, packagefullname: &windows_core::PCWSTR, backgroundtaskid: &windows_core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>;
}
impl IDebugPlmClient2_Vtbl {
    pub const fn new<Identity: IDebugPlmClient2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LaunchPlmPackageForDebugWide<Identity: IDebugPlmClient2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient2_Impl::LaunchPlmPackageForDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&timeout), core::mem::transmute(&packagefullname), core::mem::transmute(&appname), core::mem::transmute(&arguments), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid)).into()
            }
        }
        unsafe extern "system" fn LaunchPlmBgTaskForDebugWide<Identity: IDebugPlmClient2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient2_Impl::LaunchPlmBgTaskForDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&timeout), core::mem::transmute(&packagefullname), core::mem::transmute(&backgroundtaskid), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LaunchPlmPackageForDebugWide: LaunchPlmPackageForDebugWide::<Identity, OFFSET>,
            LaunchPlmBgTaskForDebugWide: LaunchPlmBgTaskForDebugWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugPlmClient2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugPlmClient2 {}
windows_core::imp::define_interface!(IDebugPlmClient3, IDebugPlmClient3_Vtbl, 0xd4a5dbd1_ca02_4d90_856a_2a92bfd0f20f);
windows_core::imp::interface_hierarchy!(IDebugPlmClient3, windows_core::IUnknown);
impl IDebugPlmClient3 {
    pub unsafe fn LaunchPlmPackageForDebugWide<P2, P3, P4>(&self, server: u64, timeout: u32, packagefullname: P2, appname: P3, arguments: P4, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchPlmPackageForDebugWide)(windows_core::Interface::as_raw(self), server, timeout, packagefullname.param().abi(), appname.param().abi(), arguments.param().abi(), processid as _, threadid as _).ok() }
    }
    pub unsafe fn LaunchPlmBgTaskForDebugWide<P2, P3>(&self, server: u64, timeout: u32, packagefullname: P2, backgroundtaskid: P3, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchPlmBgTaskForDebugWide)(windows_core::Interface::as_raw(self), server, timeout, packagefullname.param().abi(), backgroundtaskid.param().abi(), processid as _, threadid as _).ok() }
    }
    pub unsafe fn QueryPlmPackageWide<P1, P2>(&self, server: u64, packagefullname: P1, stream: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IDebugOutputStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).QueryPlmPackageWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi(), stream.param().abi()).ok() }
    }
    pub unsafe fn QueryPlmPackageList<P1>(&self, server: u64, stream: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IDebugOutputStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).QueryPlmPackageList)(windows_core::Interface::as_raw(self), server, stream.param().abi()).ok() }
    }
    pub unsafe fn EnablePlmPackageDebugWide<P1>(&self, server: u64, packagefullname: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnablePlmPackageDebugWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi()).ok() }
    }
    pub unsafe fn DisablePlmPackageDebugWide<P1>(&self, server: u64, packagefullname: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DisablePlmPackageDebugWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi()).ok() }
    }
    pub unsafe fn SuspendPlmPackageWide<P1>(&self, server: u64, packagefullname: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SuspendPlmPackageWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi()).ok() }
    }
    pub unsafe fn ResumePlmPackageWide<P1>(&self, server: u64, packagefullname: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ResumePlmPackageWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi()).ok() }
    }
    pub unsafe fn TerminatePlmPackageWide<P1>(&self, server: u64, packagefullname: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).TerminatePlmPackageWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi()).ok() }
    }
    pub unsafe fn LaunchAndDebugPlmAppWide<P1, P2, P3>(&self, server: u64, packagefullname: P1, appname: P2, arguments: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchAndDebugPlmAppWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi(), appname.param().abi(), arguments.param().abi()).ok() }
    }
    pub unsafe fn ActivateAndDebugPlmBgTaskWide<P1, P2>(&self, server: u64, packagefullname: P1, backgroundtaskid: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ActivateAndDebugPlmBgTaskWide)(windows_core::Interface::as_raw(self), server, packagefullname.param().abi(), backgroundtaskid.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugPlmClient3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LaunchPlmPackageForDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub LaunchPlmBgTaskForDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub QueryPlmPackageWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub QueryPlmPackageList: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnablePlmPackageDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub DisablePlmPackageDebugWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SuspendPlmPackageWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ResumePlmPackageWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub TerminatePlmPackageWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub LaunchAndDebugPlmAppWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ActivateAndDebugPlmBgTaskWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDebugPlmClient3_Impl: windows_core::IUnknownImpl {
    fn LaunchPlmPackageForDebugWide(&self, server: u64, timeout: u32, packagefullname: &windows_core::PCWSTR, appname: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>;
    fn LaunchPlmBgTaskForDebugWide(&self, server: u64, timeout: u32, packagefullname: &windows_core::PCWSTR, backgroundtaskid: &windows_core::PCWSTR, processid: *mut u32, threadid: *mut u32) -> windows_core::Result<()>;
    fn QueryPlmPackageWide(&self, server: u64, packagefullname: &windows_core::PCWSTR, stream: windows_core::Ref<'_, IDebugOutputStream>) -> windows_core::Result<()>;
    fn QueryPlmPackageList(&self, server: u64, stream: windows_core::Ref<'_, IDebugOutputStream>) -> windows_core::Result<()>;
    fn EnablePlmPackageDebugWide(&self, server: u64, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn DisablePlmPackageDebugWide(&self, server: u64, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SuspendPlmPackageWide(&self, server: u64, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ResumePlmPackageWide(&self, server: u64, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn TerminatePlmPackageWide(&self, server: u64, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn LaunchAndDebugPlmAppWide(&self, server: u64, packagefullname: &windows_core::PCWSTR, appname: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ActivateAndDebugPlmBgTaskWide(&self, server: u64, packagefullname: &windows_core::PCWSTR, backgroundtaskid: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDebugPlmClient3_Vtbl {
    pub const fn new<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LaunchPlmPackageForDebugWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::LaunchPlmPackageForDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&timeout), core::mem::transmute(&packagefullname), core::mem::transmute(&appname), core::mem::transmute(&arguments), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid)).into()
            }
        }
        unsafe extern "system" fn LaunchPlmBgTaskForDebugWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::LaunchPlmBgTaskForDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&timeout), core::mem::transmute(&packagefullname), core::mem::transmute(&backgroundtaskid), core::mem::transmute_copy(&processid), core::mem::transmute_copy(&threadid)).into()
            }
        }
        unsafe extern "system" fn QueryPlmPackageWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR, stream: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::QueryPlmPackageWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname), core::mem::transmute_copy(&stream)).into()
            }
        }
        unsafe extern "system" fn QueryPlmPackageList<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, stream: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::QueryPlmPackageList(this, core::mem::transmute_copy(&server), core::mem::transmute_copy(&stream)).into()
            }
        }
        unsafe extern "system" fn EnablePlmPackageDebugWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::EnablePlmPackageDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn DisablePlmPackageDebugWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::DisablePlmPackageDebugWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn SuspendPlmPackageWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::SuspendPlmPackageWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn ResumePlmPackageWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::ResumePlmPackageWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn TerminatePlmPackageWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::TerminatePlmPackageWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn LaunchAndDebugPlmAppWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR, appname: windows_core::PCWSTR, arguments: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::LaunchAndDebugPlmAppWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname), core::mem::transmute(&appname), core::mem::transmute(&arguments)).into()
            }
        }
        unsafe extern "system" fn ActivateAndDebugPlmBgTaskWide<Identity: IDebugPlmClient3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, packagefullname: windows_core::PCWSTR, backgroundtaskid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugPlmClient3_Impl::ActivateAndDebugPlmBgTaskWide(this, core::mem::transmute_copy(&server), core::mem::transmute(&packagefullname), core::mem::transmute(&backgroundtaskid)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LaunchPlmPackageForDebugWide: LaunchPlmPackageForDebugWide::<Identity, OFFSET>,
            LaunchPlmBgTaskForDebugWide: LaunchPlmBgTaskForDebugWide::<Identity, OFFSET>,
            QueryPlmPackageWide: QueryPlmPackageWide::<Identity, OFFSET>,
            QueryPlmPackageList: QueryPlmPackageList::<Identity, OFFSET>,
            EnablePlmPackageDebugWide: EnablePlmPackageDebugWide::<Identity, OFFSET>,
            DisablePlmPackageDebugWide: DisablePlmPackageDebugWide::<Identity, OFFSET>,
            SuspendPlmPackageWide: SuspendPlmPackageWide::<Identity, OFFSET>,
            ResumePlmPackageWide: ResumePlmPackageWide::<Identity, OFFSET>,
            TerminatePlmPackageWide: TerminatePlmPackageWide::<Identity, OFFSET>,
            LaunchAndDebugPlmAppWide: LaunchAndDebugPlmAppWide::<Identity, OFFSET>,
            ActivateAndDebugPlmBgTaskWide: ActivateAndDebugPlmBgTaskWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugPlmClient3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugPlmClient3 {}
windows_core::imp::define_interface!(IDebugRegisters, IDebugRegisters_Vtbl, 0xce289126_9e84_45a7_937e_67bb18691493);
windows_core::imp::interface_hierarchy!(IDebugRegisters, windows_core::IUnknown);
impl IDebugRegisters {
    pub unsafe fn GetNumberRegisters(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberRegisters)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDescription(&self, register: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, desc: Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, desc.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetIndexByName<P0>(&self, name: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIndexByName)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), register, value as _).ok() }
    }
    pub unsafe fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetValue)(windows_core::Interface::as_raw(self), register, value).ok() }
    }
    pub unsafe fn GetValues(&self, count: u32, indices: Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValues)(windows_core::Interface::as_raw(self), count, indices.unwrap_or(core::mem::zeroed()) as _, start, values as _).ok() }
    }
    pub unsafe fn SetValues(&self, count: u32, indices: Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetValues)(windows_core::Interface::as_raw(self), count, indices.unwrap_or(core::mem::zeroed()) as _, start, values).ok() }
    }
    pub unsafe fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputRegisters)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetInstructionOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInstructionOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStackOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFrameOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFrameOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugRegisters_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberRegisters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::HRESULT,
    pub GetIndexByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub GetValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub OutputRegisters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetInstructionOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetStackOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetFrameOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
}
pub trait IDebugRegisters_Impl: windows_core::IUnknownImpl {
    fn GetNumberRegisters(&self) -> windows_core::Result<u32>;
    fn GetDescription(&self, register: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::Result<()>;
    fn GetIndexByName(&self, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn GetValues(&self, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetValues(&self, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetInstructionOffset(&self) -> windows_core::Result<u64>;
    fn GetStackOffset(&self) -> windows_core::Result<u64>;
    fn GetFrameOffset(&self) -> windows_core::Result<u64>;
}
impl IDebugRegisters_Vtbl {
    pub const fn new<Identity: IDebugRegisters_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetNumberRegisters<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters_Impl::GetNumberRegisters(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDescription<Identity: IDebugRegisters_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::GetDescription(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&desc)).into()
            }
        }
        unsafe extern "system" fn GetIndexByName<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters_Impl::GetIndexByName(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValue<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, register: u32, value: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::GetValue(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn SetValue<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, register: u32, value: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::SetValue(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn GetValues<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::GetValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn SetValues<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::SetValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn OutputRegisters<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters_Impl::OutputRegisters(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInstructionOffset<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters_Impl::GetInstructionOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackOffset<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters_Impl::GetStackOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFrameOffset<Identity: IDebugRegisters_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters_Impl::GetFrameOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberRegisters: GetNumberRegisters::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetIndexByName: GetIndexByName::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
            SetValue: SetValue::<Identity, OFFSET>,
            GetValues: GetValues::<Identity, OFFSET>,
            SetValues: SetValues::<Identity, OFFSET>,
            OutputRegisters: OutputRegisters::<Identity, OFFSET>,
            GetInstructionOffset: GetInstructionOffset::<Identity, OFFSET>,
            GetStackOffset: GetStackOffset::<Identity, OFFSET>,
            GetFrameOffset: GetFrameOffset::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugRegisters as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugRegisters {}
windows_core::imp::define_interface!(IDebugRegisters2, IDebugRegisters2_Vtbl, 0x1656afa9_19c6_4e3a_97e7_5dc9160cf9c4);
windows_core::imp::interface_hierarchy!(IDebugRegisters2, windows_core::IUnknown);
impl IDebugRegisters2 {
    pub unsafe fn GetNumberRegisters(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberRegisters)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDescription(&self, register: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, desc: Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, desc.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetIndexByName<P0>(&self, name: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIndexByName)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), register, value as _).ok() }
    }
    pub unsafe fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetValue)(windows_core::Interface::as_raw(self), register, value).ok() }
    }
    pub unsafe fn GetValues(&self, count: u32, indices: Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValues)(windows_core::Interface::as_raw(self), count, indices.unwrap_or(core::mem::zeroed()) as _, start, values as _).ok() }
    }
    pub unsafe fn SetValues(&self, count: u32, indices: Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetValues)(windows_core::Interface::as_raw(self), count, indices.unwrap_or(core::mem::zeroed()) as _, start, values).ok() }
    }
    pub unsafe fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputRegisters)(windows_core::Interface::as_raw(self), outputcontrol, flags).ok() }
    }
    pub unsafe fn GetInstructionOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInstructionOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStackOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFrameOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFrameOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDescriptionWide(&self, register: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, desc: Option<*mut DEBUG_REGISTER_DESCRIPTION>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, desc.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetIndexByNameWide<P0>(&self, name: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIndexByNameWide)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberPseudoRegisters(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberPseudoRegisters)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPseudoDescription(&self, register: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, typemodule: Option<*mut u64>, typeid: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, typemodule.unwrap_or(core::mem::zeroed()) as _, typeid.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetPseudoDescriptionWide(&self, register: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, typemodule: Option<*mut u64>, typeid: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, typemodule.unwrap_or(core::mem::zeroed()) as _, typeid.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetPseudoIndexByName<P0>(&self, name: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPseudoIndexByName)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPseudoIndexByNameWide<P0>(&self, name: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPseudoIndexByNameWide)(windows_core::Interface::as_raw(self), name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPseudoValues(&self, source: u32, count: u32, indices: Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPseudoValues)(windows_core::Interface::as_raw(self), source, count, indices.unwrap_or(core::mem::zeroed()) as _, start, values as _).ok() }
    }
    pub unsafe fn SetPseudoValues(&self, source: u32, count: u32, indices: Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPseudoValues)(windows_core::Interface::as_raw(self), source, count, indices.unwrap_or(core::mem::zeroed()) as _, start, values).ok() }
    }
    pub unsafe fn GetValues2(&self, source: u32, count: u32, indices: Option<*const u32>, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValues2)(windows_core::Interface::as_raw(self), source, count, indices.unwrap_or(core::mem::zeroed()) as _, start, values as _).ok() }
    }
    pub unsafe fn SetValues2(&self, source: u32, count: u32, indices: Option<*const u32>, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetValues2)(windows_core::Interface::as_raw(self), source, count, indices.unwrap_or(core::mem::zeroed()) as _, start, values).ok() }
    }
    pub unsafe fn OutputRegisters2(&self, outputcontrol: u32, source: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInstructionOffset2)(windows_core::Interface::as_raw(self), source, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStackOffset2(&self, source: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStackOffset2)(windows_core::Interface::as_raw(self), source, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFrameOffset2(&self, source: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFrameOffset2)(windows_core::Interface::as_raw(self), source, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugRegisters2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberRegisters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::HRESULT,
    pub GetIndexByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub GetValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u32, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub OutputRegisters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetInstructionOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetStackOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetFrameOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::HRESULT,
    pub GetIndexByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetNumberPseudoRegisters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPseudoDescription: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetPseudoDescriptionWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32, *mut u64, *mut u32) -> windows_core::HRESULT,
    pub GetPseudoIndexByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetPseudoIndexByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetPseudoValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const u32, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetPseudoValues: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const u32, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub GetValues2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const u32, u32, *mut DEBUG_VALUE) -> windows_core::HRESULT,
    pub SetValues2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *const u32, u32, *const DEBUG_VALUE) -> windows_core::HRESULT,
    pub OutputRegisters2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetInstructionOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetStackOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetFrameOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
}
pub trait IDebugRegisters2_Impl: windows_core::IUnknownImpl {
    fn GetNumberRegisters(&self) -> windows_core::Result<u32>;
    fn GetDescription(&self, register: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::Result<()>;
    fn GetIndexByName(&self, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetValue(&self, register: u32, value: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetValue(&self, register: u32, value: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn GetValues(&self, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetValues(&self, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn OutputRegisters(&self, outputcontrol: u32, flags: u32) -> windows_core::Result<()>;
    fn GetInstructionOffset(&self) -> windows_core::Result<u64>;
    fn GetStackOffset(&self) -> windows_core::Result<u64>;
    fn GetFrameOffset(&self) -> windows_core::Result<u64>;
    fn GetDescriptionWide(&self, register: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, desc: *mut DEBUG_REGISTER_DESCRIPTION) -> windows_core::Result<()>;
    fn GetIndexByNameWide(&self, name: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetNumberPseudoRegisters(&self) -> windows_core::Result<u32>;
    fn GetPseudoDescription(&self, register: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, typemodule: *mut u64, typeid: *mut u32) -> windows_core::Result<()>;
    fn GetPseudoDescriptionWide(&self, register: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, typemodule: *mut u64, typeid: *mut u32) -> windows_core::Result<()>;
    fn GetPseudoIndexByName(&self, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetPseudoIndexByNameWide(&self, name: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetPseudoValues(&self, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetPseudoValues(&self, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn GetValues2(&self, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::Result<()>;
    fn SetValues2(&self, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::Result<()>;
    fn OutputRegisters2(&self, outputcontrol: u32, source: u32, flags: u32) -> windows_core::Result<()>;
    fn GetInstructionOffset2(&self, source: u32) -> windows_core::Result<u64>;
    fn GetStackOffset2(&self, source: u32) -> windows_core::Result<u64>;
    fn GetFrameOffset2(&self, source: u32) -> windows_core::Result<u64>;
}
impl IDebugRegisters2_Vtbl {
    pub const fn new<Identity: IDebugRegisters2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetNumberRegisters<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetNumberRegisters(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDescription<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetDescription(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&desc)).into()
            }
        }
        unsafe extern "system" fn GetIndexByName<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetIndexByName(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValue<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, register: u32, value: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetValue(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn SetValue<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, register: u32, value: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::SetValue(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn GetValues<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn SetValues<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::SetValues(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn OutputRegisters<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::OutputRegisters(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInstructionOffset<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetInstructionOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackOffset<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetStackOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFrameOffset<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetFrameOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDescriptionWide<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetDescriptionWide(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&desc)).into()
            }
        }
        unsafe extern "system" fn GetIndexByNameWide<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetIndexByNameWide(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberPseudoRegisters<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetNumberPseudoRegisters(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPseudoDescription<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetPseudoDescription(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&typemodule), core::mem::transmute_copy(&typeid)).into()
            }
        }
        unsafe extern "system" fn GetPseudoDescriptionWide<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetPseudoDescriptionWide(this, core::mem::transmute_copy(&register), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&typemodule), core::mem::transmute_copy(&typeid)).into()
            }
        }
        unsafe extern "system" fn GetPseudoIndexByName<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetPseudoIndexByName(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPseudoIndexByNameWide<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetPseudoIndexByNameWide(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPseudoValues<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetPseudoValues(this, core::mem::transmute_copy(&source), core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn SetPseudoValues<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::SetPseudoValues(this, core::mem::transmute_copy(&source), core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn GetValues2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *mut DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::GetValues2(this, core::mem::transmute_copy(&source), core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn SetValues2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, count: u32, indices: *const u32, start: u32, values: *const DEBUG_VALUE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::SetValues2(this, core::mem::transmute_copy(&source), core::mem::transmute_copy(&count), core::mem::transmute_copy(&indices), core::mem::transmute_copy(&start), core::mem::transmute_copy(&values)).into()
            }
        }
        unsafe extern "system" fn OutputRegisters2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, source: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugRegisters2_Impl::OutputRegisters2(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&source), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetInstructionOffset2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetInstructionOffset2(this, core::mem::transmute_copy(&source)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStackOffset2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetStackOffset2(this, core::mem::transmute_copy(&source)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFrameOffset2<Identity: IDebugRegisters2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, source: u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugRegisters2_Impl::GetFrameOffset2(this, core::mem::transmute_copy(&source)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberRegisters: GetNumberRegisters::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetIndexByName: GetIndexByName::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
            SetValue: SetValue::<Identity, OFFSET>,
            GetValues: GetValues::<Identity, OFFSET>,
            SetValues: SetValues::<Identity, OFFSET>,
            OutputRegisters: OutputRegisters::<Identity, OFFSET>,
            GetInstructionOffset: GetInstructionOffset::<Identity, OFFSET>,
            GetStackOffset: GetStackOffset::<Identity, OFFSET>,
            GetFrameOffset: GetFrameOffset::<Identity, OFFSET>,
            GetDescriptionWide: GetDescriptionWide::<Identity, OFFSET>,
            GetIndexByNameWide: GetIndexByNameWide::<Identity, OFFSET>,
            GetNumberPseudoRegisters: GetNumberPseudoRegisters::<Identity, OFFSET>,
            GetPseudoDescription: GetPseudoDescription::<Identity, OFFSET>,
            GetPseudoDescriptionWide: GetPseudoDescriptionWide::<Identity, OFFSET>,
            GetPseudoIndexByName: GetPseudoIndexByName::<Identity, OFFSET>,
            GetPseudoIndexByNameWide: GetPseudoIndexByNameWide::<Identity, OFFSET>,
            GetPseudoValues: GetPseudoValues::<Identity, OFFSET>,
            SetPseudoValues: SetPseudoValues::<Identity, OFFSET>,
            GetValues2: GetValues2::<Identity, OFFSET>,
            SetValues2: SetValues2::<Identity, OFFSET>,
            OutputRegisters2: OutputRegisters2::<Identity, OFFSET>,
            GetInstructionOffset2: GetInstructionOffset2::<Identity, OFFSET>,
            GetStackOffset2: GetStackOffset2::<Identity, OFFSET>,
            GetFrameOffset2: GetFrameOffset2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugRegisters2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugRegisters2 {}
windows_core::imp::define_interface!(IDebugSymbolGroup, IDebugSymbolGroup_Vtbl, 0xf2528316_0f1a_4431_aeed_11d096e1e2ab);
windows_core::imp::interface_hierarchy!(IDebugSymbolGroup, windows_core::IUnknown);
impl IDebugSymbolGroup {
    pub unsafe fn GetNumberSymbols(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSymbols)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbol<P0>(&self, name: P0, index: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSymbol)(windows_core::Interface::as_raw(self), name.param().abi(), index as _).ok() }
    }
    pub unsafe fn RemoveSymbolByName<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolByName)(windows_core::Interface::as_raw(self), name.param().abi()).ok() }
    }
    pub unsafe fn RemoveSymbolByIndex(&self, index: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolByIndex)(windows_core::Interface::as_raw(self), index).ok() }
    }
    pub unsafe fn GetSymbolName(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolParameters(&self, start: u32, params: &mut [DEBUG_SYMBOL_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn ExpandSymbol(&self, index: u32, expand: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ExpandSymbol)(windows_core::Interface::as_raw(self), index, expand.into()).ok() }
    }
    pub unsafe fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputSymbols)(windows_core::Interface::as_raw(self), outputcontrol, flags, start, count).ok() }
    }
    pub unsafe fn WriteSymbol<P1>(&self, index: u32, value: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteSymbol)(windows_core::Interface::as_raw(self), index, value.param().abi()).ok() }
    }
    pub unsafe fn OutputAsType<P1>(&self, index: u32, r#type: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputAsType)(windows_core::Interface::as_raw(self), index, r#type.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbolGroup_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberSymbols: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub RemoveSymbolByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveSymbolByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSymbolName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::HRESULT,
    pub ExpandSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub OutputSymbols: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32) -> windows_core::HRESULT,
    pub WriteSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputAsType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
}
pub trait IDebugSymbolGroup_Impl: windows_core::IUnknownImpl {
    fn GetNumberSymbols(&self) -> windows_core::Result<u32>;
    fn AddSymbol(&self, name: &windows_core::PCSTR, index: *mut u32) -> windows_core::Result<()>;
    fn RemoveSymbolByName(&self, name: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveSymbolByIndex(&self, index: u32) -> windows_core::Result<()>;
    fn GetSymbolName(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolParameters(&self, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::Result<()>;
    fn ExpandSymbol(&self, index: u32, expand: windows_core::BOOL) -> windows_core::Result<()>;
    fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::Result<()>;
    fn WriteSymbol(&self, index: u32, value: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputAsType(&self, index: u32, r#type: &windows_core::PCSTR) -> windows_core::Result<()>;
}
impl IDebugSymbolGroup_Vtbl {
    pub const fn new<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetNumberSymbols<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbolGroup_Impl::GetNumberSymbols(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbol<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::AddSymbol(this, core::mem::transmute(&name), core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolByName<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::RemoveSymbolByName(this, core::mem::transmute(&name)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolByIndex<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::RemoveSymbolByIndex(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn GetSymbolName<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::GetSymbolName(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolParameters<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::GetSymbolParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn ExpandSymbol<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, expand: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::ExpandSymbol(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&expand)).into()
            }
        }
        unsafe extern "system" fn OutputSymbols<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::OutputSymbols(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&start), core::mem::transmute_copy(&count)).into()
            }
        }
        unsafe extern "system" fn WriteSymbol<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, value: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::WriteSymbol(this, core::mem::transmute_copy(&index), core::mem::transmute(&value)).into()
            }
        }
        unsafe extern "system" fn OutputAsType<Identity: IDebugSymbolGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, r#type: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup_Impl::OutputAsType(this, core::mem::transmute_copy(&index), core::mem::transmute(&r#type)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberSymbols: GetNumberSymbols::<Identity, OFFSET>,
            AddSymbol: AddSymbol::<Identity, OFFSET>,
            RemoveSymbolByName: RemoveSymbolByName::<Identity, OFFSET>,
            RemoveSymbolByIndex: RemoveSymbolByIndex::<Identity, OFFSET>,
            GetSymbolName: GetSymbolName::<Identity, OFFSET>,
            GetSymbolParameters: GetSymbolParameters::<Identity, OFFSET>,
            ExpandSymbol: ExpandSymbol::<Identity, OFFSET>,
            OutputSymbols: OutputSymbols::<Identity, OFFSET>,
            WriteSymbol: WriteSymbol::<Identity, OFFSET>,
            OutputAsType: OutputAsType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbolGroup as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbolGroup {}
windows_core::imp::define_interface!(IDebugSymbolGroup2, IDebugSymbolGroup2_Vtbl, 0x6a7ccc5f_fb5e_4dcc_b41c_6c20307bccc7);
windows_core::imp::interface_hierarchy!(IDebugSymbolGroup2, windows_core::IUnknown);
impl IDebugSymbolGroup2 {
    pub unsafe fn GetNumberSymbols(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSymbols)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbol<P0>(&self, name: P0, index: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSymbol)(windows_core::Interface::as_raw(self), name.param().abi(), index as _).ok() }
    }
    pub unsafe fn RemoveSymbolByName<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolByName)(windows_core::Interface::as_raw(self), name.param().abi()).ok() }
    }
    pub unsafe fn RemoveSymbolByIndex(&self, index: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolByIndex)(windows_core::Interface::as_raw(self), index).ok() }
    }
    pub unsafe fn GetSymbolName(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolParameters(&self, start: u32, params: &mut [DEBUG_SYMBOL_PARAMETERS]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolParameters)(windows_core::Interface::as_raw(self), start, params.len().try_into().unwrap(), core::mem::transmute(params.as_ptr())).ok() }
    }
    pub unsafe fn ExpandSymbol(&self, index: u32, expand: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ExpandSymbol)(windows_core::Interface::as_raw(self), index, expand.into()).ok() }
    }
    pub unsafe fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputSymbols)(windows_core::Interface::as_raw(self), outputcontrol, flags, start, count).ok() }
    }
    pub unsafe fn WriteSymbol<P1>(&self, index: u32, value: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteSymbol)(windows_core::Interface::as_raw(self), index, value.param().abi()).ok() }
    }
    pub unsafe fn OutputAsType<P1>(&self, index: u32, r#type: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputAsType)(windows_core::Interface::as_raw(self), index, r#type.param().abi()).ok() }
    }
    pub unsafe fn AddSymbolWide<P0>(&self, name: P0, index: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolWide)(windows_core::Interface::as_raw(self), name.param().abi(), index as _).ok() }
    }
    pub unsafe fn RemoveSymbolByNameWide<P0>(&self, name: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolByNameWide)(windows_core::Interface::as_raw(self), name.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolNameWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteSymbolWide<P1>(&self, index: u32, value: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WriteSymbolWide)(windows_core::Interface::as_raw(self), index, value.param().abi()).ok() }
    }
    pub unsafe fn OutputAsTypeWide<P1>(&self, index: u32, r#type: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OutputAsTypeWide)(windows_core::Interface::as_raw(self), index, r#type.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolTypeName(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolTypeNameWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolSize(&self, index: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolSize)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolOffset(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOffset)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolRegister(&self, index: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolRegister)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolValueText(&self, index: u32, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolValueTextWide(&self, index: u32, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryInformation(&self, index: u32, entry: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntryInformation)(windows_core::Interface::as_raw(self), index, entry as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbolGroup2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberSymbols: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub RemoveSymbolByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub RemoveSymbolByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSymbolName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::HRESULT,
    pub ExpandSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub OutputSymbols: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, u32) -> windows_core::HRESULT,
    pub WriteSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub OutputAsType: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AddSymbolWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub RemoveSymbolByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSymbolNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteSymbolWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub OutputAsTypeWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSymbolTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolSize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetSymbolRegister: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolValueText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolValueTextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT,
}
pub trait IDebugSymbolGroup2_Impl: windows_core::IUnknownImpl {
    fn GetNumberSymbols(&self) -> windows_core::Result<u32>;
    fn AddSymbol(&self, name: &windows_core::PCSTR, index: *mut u32) -> windows_core::Result<()>;
    fn RemoveSymbolByName(&self, name: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn RemoveSymbolByIndex(&self, index: u32) -> windows_core::Result<()>;
    fn GetSymbolName(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolParameters(&self, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::Result<()>;
    fn ExpandSymbol(&self, index: u32, expand: windows_core::BOOL) -> windows_core::Result<()>;
    fn OutputSymbols(&self, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::Result<()>;
    fn WriteSymbol(&self, index: u32, value: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn OutputAsType(&self, index: u32, r#type: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AddSymbolWide(&self, name: &windows_core::PCWSTR, index: *mut u32) -> windows_core::Result<()>;
    fn RemoveSymbolByNameWide(&self, name: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSymbolNameWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn WriteSymbolWide(&self, index: u32, value: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OutputAsTypeWide(&self, index: u32, r#type: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSymbolTypeName(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolTypeNameWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolSize(&self, index: u32) -> windows_core::Result<u32>;
    fn GetSymbolOffset(&self, index: u32) -> windows_core::Result<u64>;
    fn GetSymbolRegister(&self, index: u32) -> windows_core::Result<u32>;
    fn GetSymbolValueText(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolValueTextWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryInformation(&self, index: u32, entry: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()>;
}
impl IDebugSymbolGroup2_Vtbl {
    pub const fn new<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetNumberSymbols<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbolGroup2_Impl::GetNumberSymbols(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbol<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::AddSymbol(this, core::mem::transmute(&name), core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolByName<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::RemoveSymbolByName(this, core::mem::transmute(&name)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolByIndex<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::RemoveSymbolByIndex(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn GetSymbolName<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolName(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolParameters<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, params: *mut DEBUG_SYMBOL_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolParameters(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn ExpandSymbol<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, expand: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::ExpandSymbol(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&expand)).into()
            }
        }
        unsafe extern "system" fn OutputSymbols<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, start: u32, count: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::OutputSymbols(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&start), core::mem::transmute_copy(&count)).into()
            }
        }
        unsafe extern "system" fn WriteSymbol<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, value: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::WriteSymbol(this, core::mem::transmute_copy(&index), core::mem::transmute(&value)).into()
            }
        }
        unsafe extern "system" fn OutputAsType<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, r#type: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::OutputAsType(this, core::mem::transmute_copy(&index), core::mem::transmute(&r#type)).into()
            }
        }
        unsafe extern "system" fn AddSymbolWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::AddSymbolWide(this, core::mem::transmute(&name), core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolByNameWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::RemoveSymbolByNameWide(this, core::mem::transmute(&name)).into()
            }
        }
        unsafe extern "system" fn GetSymbolNameWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolNameWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn WriteSymbolWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, value: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::WriteSymbolWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&value)).into()
            }
        }
        unsafe extern "system" fn OutputAsTypeWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, r#type: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::OutputAsTypeWide(this, core::mem::transmute_copy(&index), core::mem::transmute(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetSymbolTypeName<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolTypeName(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolTypeNameWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolTypeNameWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolSize<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbolGroup2_Impl::GetSymbolSize(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolOffset<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbolGroup2_Impl::GetSymbolOffset(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolRegister<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, register: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbolGroup2_Impl::GetSymbolRegister(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        register.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolValueText<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolValueText(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolValueTextWide<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolValueTextWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryInformation<Identity: IDebugSymbolGroup2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, entry: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbolGroup2_Impl::GetSymbolEntryInformation(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&entry)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberSymbols: GetNumberSymbols::<Identity, OFFSET>,
            AddSymbol: AddSymbol::<Identity, OFFSET>,
            RemoveSymbolByName: RemoveSymbolByName::<Identity, OFFSET>,
            RemoveSymbolByIndex: RemoveSymbolByIndex::<Identity, OFFSET>,
            GetSymbolName: GetSymbolName::<Identity, OFFSET>,
            GetSymbolParameters: GetSymbolParameters::<Identity, OFFSET>,
            ExpandSymbol: ExpandSymbol::<Identity, OFFSET>,
            OutputSymbols: OutputSymbols::<Identity, OFFSET>,
            WriteSymbol: WriteSymbol::<Identity, OFFSET>,
            OutputAsType: OutputAsType::<Identity, OFFSET>,
            AddSymbolWide: AddSymbolWide::<Identity, OFFSET>,
            RemoveSymbolByNameWide: RemoveSymbolByNameWide::<Identity, OFFSET>,
            GetSymbolNameWide: GetSymbolNameWide::<Identity, OFFSET>,
            WriteSymbolWide: WriteSymbolWide::<Identity, OFFSET>,
            OutputAsTypeWide: OutputAsTypeWide::<Identity, OFFSET>,
            GetSymbolTypeName: GetSymbolTypeName::<Identity, OFFSET>,
            GetSymbolTypeNameWide: GetSymbolTypeNameWide::<Identity, OFFSET>,
            GetSymbolSize: GetSymbolSize::<Identity, OFFSET>,
            GetSymbolOffset: GetSymbolOffset::<Identity, OFFSET>,
            GetSymbolRegister: GetSymbolRegister::<Identity, OFFSET>,
            GetSymbolValueText: GetSymbolValueText::<Identity, OFFSET>,
            GetSymbolValueTextWide: GetSymbolValueTextWide::<Identity, OFFSET>,
            GetSymbolEntryInformation: GetSymbolEntryInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbolGroup2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbolGroup2 {}
windows_core::imp::define_interface!(IDebugSymbols, IDebugSymbols_Vtbl, 0x8c31e98c_983a_48a5_9016_6fe5d667a950);
windows_core::imp::interface_hierarchy!(IDebugSymbols, windows_core::IUnknown);
impl IDebugSymbols {
    pub unsafe fn GetSymbolOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByName)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffset)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLine<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLine)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberModules)(windows_core::Interface::as_raw(self), loaded as _, unloaded as _).ok() }
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModuleByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset)(windows_core::Interface::as_raw(self), offset, startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: Option<&mut [u8]>, imagenamesize: Option<*mut u32>, modulenamebuffer: Option<&mut [u8]>, modulenamesize: Option<*mut u32>, loadedimagenamebuffer: Option<&mut [u8]>, loadedimagenamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                imagenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(modulenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                modulenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                modulenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                loadedimagenamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleParameters)(windows_core::Interface::as_raw(self), count, bases.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModule)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeId<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeId)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeSize)(windows_core::Interface::as_raw(self), module, typeid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffset<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffset)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeId)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetTypeId)(windows_core::Interface::as_raw(self), offset, typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTypedDataPhysical)(windows_core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok() }
    }
    pub unsafe fn GetScope(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScope)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn ResetScope(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetScope)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup>
    where
        P1: windows_core::Param<IDebugSymbolGroup>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatch)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: Option<&mut [u8]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: Option<&mut [u8]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFile<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFile)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsets)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u64, u32, *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub GetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResetScope: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugSymbols_Impl: windows_core::IUnknownImpl {
    fn GetSymbolOptions(&self) -> windows_core::Result<u32>;
    fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffset(&self, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByName(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffset(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLine(&self, line: u32, file: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()>;
    fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64>;
    fn GetModuleByModuleName(&self, name: &windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleNames(&self, 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::Result<()>;
    fn GetModuleParameters(&self, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()>;
    fn GetSymbolModule(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeId(&self, module: u64, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32>;
    fn GetFieldOffset(&self, module: u64, typeid: u32, field: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeId(&self, symbol: &windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn GetScope(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScope(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn ResetScope(&self) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup>) -> windows_core::Result<IDebugSymbolGroup>;
    fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup>;
    fn StartSymbolMatch(&self, pattern: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatch(&self, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()>;
    fn Reload(&self, module: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSymbolPath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSymbolPath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetImagePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendImagePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSourcePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElement(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSourcePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn FindSourceFile(&self, startelement: u32, file: &windows_core::PCSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsets(&self, file: &windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
}
impl IDebugSymbols_Vtbl {
    pub const fn new<Identity: IDebugSymbols_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSymbolOptions<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetSymbolOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbolOptions<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::AddSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolOptions<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::RemoveSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetSymbolOptions<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::SetSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffset<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByName<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetOffsetByName(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffset<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetNearNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffset<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetLineByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLine<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetOffsetByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberModules<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetNumberModules(this, core::mem::transmute_copy(&loaded), core::mem::transmute_copy(&unloaded)).into()
            }
        }
        unsafe extern "system" fn GetModuleByIndex<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetModuleByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleName<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetModuleByModuleName(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetModuleByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleNames<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetModuleNames(
                    this,
                    core::mem::transmute_copy(&index),
                    core::mem::transmute_copy(&base),
                    core::mem::transmute_copy(&imagenamebuffer),
                    core::mem::transmute_copy(&imagenamebuffersize),
                    core::mem::transmute_copy(&imagenamesize),
                    core::mem::transmute_copy(&modulenamebuffer),
                    core::mem::transmute_copy(&modulenamebuffersize),
                    core::mem::transmute_copy(&modulenamesize),
                    core::mem::transmute_copy(&loadedimagenamebuffer),
                    core::mem::transmute_copy(&loadedimagenamebuffersize),
                    core::mem::transmute_copy(&loadedimagenamesize),
                )
                .into()
            }
        }
        unsafe extern "system" fn GetModuleParameters<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetModuleParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&bases), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModule<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetSymbolModule(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeName<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetTypeName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeId<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetTypeId(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeSize<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetTypeSize(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffset<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetFieldOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeId<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetSymbolTypeId(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetOffsetTypeId<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetOffsetTypeId(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataVirtual<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::ReadTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataVirtual<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::WriteTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataVirtual<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::OutputTypedDataVirtual(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataPhysical<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::ReadTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataPhysical<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::WriteTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataPhysical<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::OutputTypedDataPhysical(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetScope<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::SetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn ResetScope<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::ResetScope(this).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::GetScopeSymbolGroup(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::CreateSymbolGroup(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatch<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols_Impl::StartSymbolMatch(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatch<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetNextSymbolMatch(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn EndSymbolMatch<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::EndSymbolMatch(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Reload<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::Reload(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetSymbolPath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::SetSymbolPath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::AppendSymbolPath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetImagePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::SetImagePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::AppendImagePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetSourcePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElement<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetSourcePathElement(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::SetSourcePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePath<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::AppendSourcePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFile<Identity: IDebugSymbols_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::FindSourceFile(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsets<Identity: IDebugSymbols_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols_Impl::GetSourceFileLineOffsets(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSymbolOptions: GetSymbolOptions::<Identity, OFFSET>,
            AddSymbolOptions: AddSymbolOptions::<Identity, OFFSET>,
            RemoveSymbolOptions: RemoveSymbolOptions::<Identity, OFFSET>,
            SetSymbolOptions: SetSymbolOptions::<Identity, OFFSET>,
            GetNameByOffset: GetNameByOffset::<Identity, OFFSET>,
            GetOffsetByName: GetOffsetByName::<Identity, OFFSET>,
            GetNearNameByOffset: GetNearNameByOffset::<Identity, OFFSET>,
            GetLineByOffset: GetLineByOffset::<Identity, OFFSET>,
            GetOffsetByLine: GetOffsetByLine::<Identity, OFFSET>,
            GetNumberModules: GetNumberModules::<Identity, OFFSET>,
            GetModuleByIndex: GetModuleByIndex::<Identity, OFFSET>,
            GetModuleByModuleName: GetModuleByModuleName::<Identity, OFFSET>,
            GetModuleByOffset: GetModuleByOffset::<Identity, OFFSET>,
            GetModuleNames: GetModuleNames::<Identity, OFFSET>,
            GetModuleParameters: GetModuleParameters::<Identity, OFFSET>,
            GetSymbolModule: GetSymbolModule::<Identity, OFFSET>,
            GetTypeName: GetTypeName::<Identity, OFFSET>,
            GetTypeId: GetTypeId::<Identity, OFFSET>,
            GetTypeSize: GetTypeSize::<Identity, OFFSET>,
            GetFieldOffset: GetFieldOffset::<Identity, OFFSET>,
            GetSymbolTypeId: GetSymbolTypeId::<Identity, OFFSET>,
            GetOffsetTypeId: GetOffsetTypeId::<Identity, OFFSET>,
            ReadTypedDataVirtual: ReadTypedDataVirtual::<Identity, OFFSET>,
            WriteTypedDataVirtual: WriteTypedDataVirtual::<Identity, OFFSET>,
            OutputTypedDataVirtual: OutputTypedDataVirtual::<Identity, OFFSET>,
            ReadTypedDataPhysical: ReadTypedDataPhysical::<Identity, OFFSET>,
            WriteTypedDataPhysical: WriteTypedDataPhysical::<Identity, OFFSET>,
            OutputTypedDataPhysical: OutputTypedDataPhysical::<Identity, OFFSET>,
            GetScope: GetScope::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            ResetScope: ResetScope::<Identity, OFFSET>,
            GetScopeSymbolGroup: GetScopeSymbolGroup::<Identity, OFFSET>,
            CreateSymbolGroup: CreateSymbolGroup::<Identity, OFFSET>,
            StartSymbolMatch: StartSymbolMatch::<Identity, OFFSET>,
            GetNextSymbolMatch: GetNextSymbolMatch::<Identity, OFFSET>,
            EndSymbolMatch: EndSymbolMatch::<Identity, OFFSET>,
            Reload: Reload::<Identity, OFFSET>,
            GetSymbolPath: GetSymbolPath::<Identity, OFFSET>,
            SetSymbolPath: SetSymbolPath::<Identity, OFFSET>,
            AppendSymbolPath: AppendSymbolPath::<Identity, OFFSET>,
            GetImagePath: GetImagePath::<Identity, OFFSET>,
            SetImagePath: SetImagePath::<Identity, OFFSET>,
            AppendImagePath: AppendImagePath::<Identity, OFFSET>,
            GetSourcePath: GetSourcePath::<Identity, OFFSET>,
            GetSourcePathElement: GetSourcePathElement::<Identity, OFFSET>,
            SetSourcePath: SetSourcePath::<Identity, OFFSET>,
            AppendSourcePath: AppendSourcePath::<Identity, OFFSET>,
            FindSourceFile: FindSourceFile::<Identity, OFFSET>,
            GetSourceFileLineOffsets: GetSourceFileLineOffsets::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbols as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbols {}
windows_core::imp::define_interface!(IDebugSymbols2, IDebugSymbols2_Vtbl, 0x3a707211_afdd_4495_ad4f_56fecdf8163f);
windows_core::imp::interface_hierarchy!(IDebugSymbols2, windows_core::IUnknown);
impl IDebugSymbols2 {
    pub unsafe fn GetSymbolOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByName)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffset)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLine<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLine)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberModules)(windows_core::Interface::as_raw(self), loaded as _, unloaded as _).ok() }
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModuleByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset)(windows_core::Interface::as_raw(self), offset, startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: Option<&mut [u8]>, imagenamesize: Option<*mut u32>, modulenamebuffer: Option<&mut [u8]>, modulenamesize: Option<*mut u32>, loadedimagenamebuffer: Option<&mut [u8]>, loadedimagenamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                imagenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(modulenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                modulenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                modulenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                loadedimagenamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleParameters)(windows_core::Interface::as_raw(self), count, bases.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModule)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeId<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeId)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeSize)(windows_core::Interface::as_raw(self), module, typeid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffset<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffset)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeId)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetTypeId)(windows_core::Interface::as_raw(self), offset, typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTypedDataPhysical)(windows_core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok() }
    }
    pub unsafe fn GetScope(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScope)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn ResetScope(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetScope)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup>
    where
        P1: windows_core::Param<IDebugSymbolGroup>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatch)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: Option<&mut [u8]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: Option<&mut [u8]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFile<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFile)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsets)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformation<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformation)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u64, u32, *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub GetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResetScope: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IDebugSymbols2_Impl: windows_core::IUnknownImpl {
    fn GetSymbolOptions(&self) -> windows_core::Result<u32>;
    fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffset(&self, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByName(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffset(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLine(&self, line: u32, file: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()>;
    fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64>;
    fn GetModuleByModuleName(&self, name: &windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleNames(&self, 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::Result<()>;
    fn GetModuleParameters(&self, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()>;
    fn GetSymbolModule(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeId(&self, module: u64, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32>;
    fn GetFieldOffset(&self, module: u64, typeid: u32, field: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeId(&self, symbol: &windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn GetScope(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScope(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn ResetScope(&self) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup>) -> windows_core::Result<IDebugSymbolGroup>;
    fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup>;
    fn StartSymbolMatch(&self, pattern: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatch(&self, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()>;
    fn Reload(&self, module: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSymbolPath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSymbolPath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetImagePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendImagePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSourcePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElement(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSourcePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn FindSourceFile(&self, startelement: u32, file: &windows_core::PCSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsets(&self, file: &windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformation(&self, index: u32, base: u64, item: &windows_core::PCSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeOptions(&self) -> windows_core::Result<u32>;
    fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()>;
}
impl IDebugSymbols2_Vtbl {
    pub const fn new<Identity: IDebugSymbols2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSymbolOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetSymbolOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbolOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::AddSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::RemoveSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetSymbolOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffset<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByName<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetOffsetByName(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffset<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetNearNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffset<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetLineByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLine<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetOffsetByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberModules<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetNumberModules(this, core::mem::transmute_copy(&loaded), core::mem::transmute_copy(&unloaded)).into()
            }
        }
        unsafe extern "system" fn GetModuleByIndex<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetModuleByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleName<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleByModuleName(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleNames<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleNames(
                    this,
                    core::mem::transmute_copy(&index),
                    core::mem::transmute_copy(&base),
                    core::mem::transmute_copy(&imagenamebuffer),
                    core::mem::transmute_copy(&imagenamebuffersize),
                    core::mem::transmute_copy(&imagenamesize),
                    core::mem::transmute_copy(&modulenamebuffer),
                    core::mem::transmute_copy(&modulenamebuffersize),
                    core::mem::transmute_copy(&modulenamesize),
                    core::mem::transmute_copy(&loadedimagenamebuffer),
                    core::mem::transmute_copy(&loadedimagenamebuffersize),
                    core::mem::transmute_copy(&loadedimagenamesize),
                )
                .into()
            }
        }
        unsafe extern "system" fn GetModuleParameters<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&bases), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModule<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetSymbolModule(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeName<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetTypeName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeId<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetTypeId(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeSize<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetTypeSize(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffset<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetFieldOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeId<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetSymbolTypeId(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetOffsetTypeId<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetOffsetTypeId(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataVirtual<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::ReadTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataVirtual<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::WriteTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataVirtual<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::OutputTypedDataVirtual(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataPhysical<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::ReadTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataPhysical<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::WriteTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataPhysical<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::OutputTypedDataPhysical(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetScope<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn ResetScope<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::ResetScope(this).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetScopeSymbolGroup(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::CreateSymbolGroup(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatch<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::StartSymbolMatch(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatch<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetNextSymbolMatch(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn EndSymbolMatch<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::EndSymbolMatch(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Reload<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::Reload(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetSymbolPath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetSymbolPath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::AppendSymbolPath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetImagePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetImagePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::AppendImagePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetSourcePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElement<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetSourcePathElement(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetSourcePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePath<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::AppendSourcePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFile<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::FindSourceFile(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsets<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetSourceFileLineOffsets(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformation<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleVersionInformation(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameString<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetModuleNameString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantName<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetConstantName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldName<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::GetFieldName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols2_Impl::GetTypeOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddTypeOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::AddTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveTypeOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::RemoveTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetTypeOptions<Identity: IDebugSymbols2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols2_Impl::SetTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSymbolOptions: GetSymbolOptions::<Identity, OFFSET>,
            AddSymbolOptions: AddSymbolOptions::<Identity, OFFSET>,
            RemoveSymbolOptions: RemoveSymbolOptions::<Identity, OFFSET>,
            SetSymbolOptions: SetSymbolOptions::<Identity, OFFSET>,
            GetNameByOffset: GetNameByOffset::<Identity, OFFSET>,
            GetOffsetByName: GetOffsetByName::<Identity, OFFSET>,
            GetNearNameByOffset: GetNearNameByOffset::<Identity, OFFSET>,
            GetLineByOffset: GetLineByOffset::<Identity, OFFSET>,
            GetOffsetByLine: GetOffsetByLine::<Identity, OFFSET>,
            GetNumberModules: GetNumberModules::<Identity, OFFSET>,
            GetModuleByIndex: GetModuleByIndex::<Identity, OFFSET>,
            GetModuleByModuleName: GetModuleByModuleName::<Identity, OFFSET>,
            GetModuleByOffset: GetModuleByOffset::<Identity, OFFSET>,
            GetModuleNames: GetModuleNames::<Identity, OFFSET>,
            GetModuleParameters: GetModuleParameters::<Identity, OFFSET>,
            GetSymbolModule: GetSymbolModule::<Identity, OFFSET>,
            GetTypeName: GetTypeName::<Identity, OFFSET>,
            GetTypeId: GetTypeId::<Identity, OFFSET>,
            GetTypeSize: GetTypeSize::<Identity, OFFSET>,
            GetFieldOffset: GetFieldOffset::<Identity, OFFSET>,
            GetSymbolTypeId: GetSymbolTypeId::<Identity, OFFSET>,
            GetOffsetTypeId: GetOffsetTypeId::<Identity, OFFSET>,
            ReadTypedDataVirtual: ReadTypedDataVirtual::<Identity, OFFSET>,
            WriteTypedDataVirtual: WriteTypedDataVirtual::<Identity, OFFSET>,
            OutputTypedDataVirtual: OutputTypedDataVirtual::<Identity, OFFSET>,
            ReadTypedDataPhysical: ReadTypedDataPhysical::<Identity, OFFSET>,
            WriteTypedDataPhysical: WriteTypedDataPhysical::<Identity, OFFSET>,
            OutputTypedDataPhysical: OutputTypedDataPhysical::<Identity, OFFSET>,
            GetScope: GetScope::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            ResetScope: ResetScope::<Identity, OFFSET>,
            GetScopeSymbolGroup: GetScopeSymbolGroup::<Identity, OFFSET>,
            CreateSymbolGroup: CreateSymbolGroup::<Identity, OFFSET>,
            StartSymbolMatch: StartSymbolMatch::<Identity, OFFSET>,
            GetNextSymbolMatch: GetNextSymbolMatch::<Identity, OFFSET>,
            EndSymbolMatch: EndSymbolMatch::<Identity, OFFSET>,
            Reload: Reload::<Identity, OFFSET>,
            GetSymbolPath: GetSymbolPath::<Identity, OFFSET>,
            SetSymbolPath: SetSymbolPath::<Identity, OFFSET>,
            AppendSymbolPath: AppendSymbolPath::<Identity, OFFSET>,
            GetImagePath: GetImagePath::<Identity, OFFSET>,
            SetImagePath: SetImagePath::<Identity, OFFSET>,
            AppendImagePath: AppendImagePath::<Identity, OFFSET>,
            GetSourcePath: GetSourcePath::<Identity, OFFSET>,
            GetSourcePathElement: GetSourcePathElement::<Identity, OFFSET>,
            SetSourcePath: SetSourcePath::<Identity, OFFSET>,
            AppendSourcePath: AppendSourcePath::<Identity, OFFSET>,
            FindSourceFile: FindSourceFile::<Identity, OFFSET>,
            GetSourceFileLineOffsets: GetSourceFileLineOffsets::<Identity, OFFSET>,
            GetModuleVersionInformation: GetModuleVersionInformation::<Identity, OFFSET>,
            GetModuleNameString: GetModuleNameString::<Identity, OFFSET>,
            GetConstantName: GetConstantName::<Identity, OFFSET>,
            GetFieldName: GetFieldName::<Identity, OFFSET>,
            GetTypeOptions: GetTypeOptions::<Identity, OFFSET>,
            AddTypeOptions: AddTypeOptions::<Identity, OFFSET>,
            RemoveTypeOptions: RemoveTypeOptions::<Identity, OFFSET>,
            SetTypeOptions: SetTypeOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbols2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbols2 {}
windows_core::imp::define_interface!(IDebugSymbols3, IDebugSymbols3_Vtbl, 0xf02fbecc_50ac_4f36_9ad9_c975e8f32ff8);
windows_core::imp::interface_hierarchy!(IDebugSymbols3, windows_core::IUnknown);
impl IDebugSymbols3 {
    pub unsafe fn GetSymbolOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByName)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffset)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLine<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLine)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberModules)(windows_core::Interface::as_raw(self), loaded as _, unloaded as _).ok() }
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModuleByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset)(windows_core::Interface::as_raw(self), offset, startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: Option<&mut [u8]>, imagenamesize: Option<*mut u32>, modulenamebuffer: Option<&mut [u8]>, modulenamesize: Option<*mut u32>, loadedimagenamebuffer: Option<&mut [u8]>, loadedimagenamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                imagenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(modulenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                modulenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                modulenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                loadedimagenamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleParameters)(windows_core::Interface::as_raw(self), count, bases.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModule)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeId<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeId)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeSize)(windows_core::Interface::as_raw(self), module, typeid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffset<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffset)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeId)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetTypeId)(windows_core::Interface::as_raw(self), offset, typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTypedDataPhysical)(windows_core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok() }
    }
    pub unsafe fn GetScope(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScope)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn ResetScope(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetScope)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup>
    where
        P1: windows_core::Param<IDebugSymbolGroup>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatch)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: Option<&mut [u8]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: Option<&mut [u8]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFile<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFile)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsets)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformation<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformation)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByNameWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u16]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffsetWide)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLineWide<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLineWide)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleNameWide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModuleWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeIdWide<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeIdWide)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffsetWide<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffsetWide)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeIdWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup2<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup2>
    where
        P1: windows_core::Param<IDebugSymbolGroup2>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup2)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup2)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatchWide)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: Option<&mut [u16]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReloadWide)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: Option<&mut [u16]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFileWide<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u16]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileWide)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformationWide<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformationWide)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2Wide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset2)(windows_core::Interface::as_raw(self), offset, startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticModule<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModule)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn AddSyntheticModuleWide<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModuleWide)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticModule)(windows_core::Interface::as_raw(self), base).ok() }
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentScopeFrameIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeFromJitDebugInfo)(windows_core::Interface::as_raw(self), outputcontrol, infooffset).ok() }
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, buffersize: u32, bufferneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFunctionEntryByOffset)(windows_core::Interface::as_raw(self), offset, flags, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, bufferneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffset<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffset)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbol<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbol)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbolWide<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbolWide)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticSymbol)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: Option<*mut DEBUG_MODULE_AND_ID>, displacements: Option<*mut u64>, idscount: u32, entries: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByOffset)(windows_core::Interface::as_raw(self), offset, flags, ids.unwrap_or(core::mem::zeroed()) as _, displacements.unwrap_or(core::mem::zeroed()) as _, idscount, entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByName)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByNameWide)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryByToken)(windows_core::Interface::as_raw(self), modulebase, token, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntryInformation)(windows_core::Interface::as_raw(self), id, info as _).ok() }
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(windows_core::Interface::as_raw(self), fromid, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLine<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLine)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLineWide<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLineWide)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntryBySourceEntry)(windows_core::Interface::as_raw(self), fromentry, flags, toentry as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u64, u32, *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub GetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResetScope: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCWSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64) -> windows_core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT,
}
pub trait IDebugSymbols3_Impl: windows_core::IUnknownImpl {
    fn GetSymbolOptions(&self) -> windows_core::Result<u32>;
    fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffset(&self, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByName(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffset(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLine(&self, line: u32, file: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()>;
    fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64>;
    fn GetModuleByModuleName(&self, name: &windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleNames(&self, 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::Result<()>;
    fn GetModuleParameters(&self, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()>;
    fn GetSymbolModule(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeId(&self, module: u64, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32>;
    fn GetFieldOffset(&self, module: u64, typeid: u32, field: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeId(&self, symbol: &windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn GetScope(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScope(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn ResetScope(&self) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup>) -> windows_core::Result<IDebugSymbolGroup>;
    fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup>;
    fn StartSymbolMatch(&self, pattern: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatch(&self, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()>;
    fn Reload(&self, module: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSymbolPath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSymbolPath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetImagePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendImagePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSourcePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElement(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSourcePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn FindSourceFile(&self, startelement: u32, file: &windows_core::PCSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsets(&self, file: &windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformation(&self, index: u32, base: u64, item: &windows_core::PCSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeOptions(&self) -> windows_core::Result<u32>;
    fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffsetWide(&self, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByNameWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffsetWide(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLineWide(&self, line: u32, file: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetModuleByModuleNameWide(&self, name: &windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetSymbolModuleWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeIdWide(&self, module: u64, name: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetFieldOffsetWide(&self, module: u64, typeid: u32, field: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeIdWide(&self, symbol: &windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup2(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup2>) -> windows_core::Result<IDebugSymbolGroup2>;
    fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2>;
    fn StartSymbolMatchWide(&self, pattern: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatchWide(&self, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn ReloadWide(&self, module: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSymbolPathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSymbolPathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetImagePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendImagePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSourcePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElementWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSourcePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn FindSourceFileWide(&self, startelement: u32, file: &windows_core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PWSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsetsWide(&self, file: &windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformationWide(&self, index: u32, base: u64, item: &windows_core::PCWSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2(&self, name: &windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2Wide(&self, name: &windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn AddSyntheticModule(&self, base: u64, size: u32, imagepath: &windows_core::PCSTR, modulename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn AddSyntheticModuleWide(&self, base: u64, size: u32, imagepath: &windows_core::PCWSTR, modulename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()>;
    fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32>;
    fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()>;
    fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> windows_core::Result<()>;
    fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()>;
    fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::Result<()>;
    fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffset(&self, module: u64, containertypeid: u32, field: &windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffsetWide(&self, module: u64, containertypeid: u32, field: &windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn AddSyntheticSymbol(&self, offset: u64, size: u32, name: &windows_core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn AddSyntheticSymbolWide(&self, offset: u64, size: u32, name: &windows_core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByName(&self, symbol: &windows_core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByNameWide(&self, symbol: &windows_core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()>;
    fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLine(&self, line: u32, file: &windows_core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLineWide(&self, line: u32, file: &windows_core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()>;
}
impl IDebugSymbols3_Vtbl {
    pub const fn new<Identity: IDebugSymbols3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSymbolOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetSymbolOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbolOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::RemoveSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetSymbolOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetOffsetByName(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNearNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetLineByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLine<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetOffsetByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberModules<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNumberModules(this, core::mem::transmute_copy(&loaded), core::mem::transmute_copy(&unloaded)).into()
            }
        }
        unsafe extern "system" fn GetModuleByIndex<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetModuleByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByModuleName(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleNames<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleNames(
                    this,
                    core::mem::transmute_copy(&index),
                    core::mem::transmute_copy(&base),
                    core::mem::transmute_copy(&imagenamebuffer),
                    core::mem::transmute_copy(&imagenamebuffersize),
                    core::mem::transmute_copy(&imagenamesize),
                    core::mem::transmute_copy(&modulenamebuffer),
                    core::mem::transmute_copy(&modulenamebuffersize),
                    core::mem::transmute_copy(&modulenamesize),
                    core::mem::transmute_copy(&loadedimagenamebuffer),
                    core::mem::transmute_copy(&loadedimagenamebuffersize),
                    core::mem::transmute_copy(&loadedimagenamesize),
                )
                .into()
            }
        }
        unsafe extern "system" fn GetModuleParameters<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&bases), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModule<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetSymbolModule(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetTypeName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeId<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetTypeId(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeSize<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetTypeSize(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetFieldOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeId<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolTypeId(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetOffsetTypeId<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetOffsetTypeId(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataVirtual<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::ReadTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataVirtual<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::WriteTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataVirtual<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::OutputTypedDataVirtual(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataPhysical<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::ReadTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataPhysical<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::WriteTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataPhysical<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::OutputTypedDataPhysical(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetScope<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn ResetScope<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::ResetScope(this).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetScopeSymbolGroup(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::CreateSymbolGroup(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatch<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::StartSymbolMatch(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatch<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNextSymbolMatch(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn EndSymbolMatch<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::EndSymbolMatch(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Reload<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::Reload(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolPath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetSymbolPath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendSymbolPath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetImagePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetImagePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendImagePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourcePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElement<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourcePathElement(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetSourcePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePath<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendSourcePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFile<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::FindSourceFile(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsets<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceFileLineOffsets(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformation<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleVersionInformation(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameString<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleNameString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetConstantName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetFieldName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetTypeOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddTypeOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveTypeOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::RemoveTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetTypeOptions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffsetWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetOffsetByNameWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffsetWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNearNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffsetWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetLineByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLineWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetOffsetByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByModuleNameWide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModuleWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetSymbolModuleWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetTypeNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeIdWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCWSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetTypeIdWide(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffsetWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCWSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetFieldOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeIdWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolTypeIdWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup2<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetScopeSymbolGroup2(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup2<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::CreateSymbolGroup2(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatchWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::StartSymbolMatchWide(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatchWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetNextSymbolMatchWide(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn ReloadWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::ReloadWide(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolPathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetSymbolPathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendSymbolPathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetImagePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetImagePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendImagePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourcePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElementWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourcePathElementWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetSourcePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePathWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AppendSourcePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::FindSourceFileWide(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsetsWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceFileLineOffsetsWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformationWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleVersionInformationWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameStringWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleNameStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetConstantNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetFieldNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn IsManagedModule<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::IsManagedModule(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByModuleName2(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2Wide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByModuleName2Wide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset2<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetModuleByOffset2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModule<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCSTR, modulename: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddSyntheticModule(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModuleWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCWSTR, modulename: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddSyntheticModuleWide(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticModule<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::RemoveSyntheticModule(this, core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetCurrentScopeFrameIndex<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetCurrentScopeFrameIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetScopeFrameByIndex<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetScopeFrameByIndex(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromJitDebugInfo<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetScopeFromJitDebugInfo(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&infooffset)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromStoredEvent<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::SetScopeFromStoredEvent(this).into()
            }
        }
        unsafe extern "system" fn OutputSymbolByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::OutputSymbolByOffset(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFunctionEntryByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetFunctionEntryByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bufferneeded)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetFieldTypeAndOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffsetWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetFieldTypeAndOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbol<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddSyntheticSymbol(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbolWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::AddSyntheticSymbolWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticSymbol<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::RemoveSyntheticSymbol(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&displacements), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByName<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntriesByName(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByNameWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntriesByNameWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryByToken<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetSymbolEntryByToken(this, core::mem::transmute_copy(&modulebase), core::mem::transmute_copy(&token)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolEntryInformation<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntryInformation(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&info)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryString<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntryString(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryStringWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntryStringWide(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryOffsetRegions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSymbolEntryOffsetRegions(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryBySymbolEntry<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols3_Impl::GetSymbolEntryBySymbolEntry(this, core::mem::transmute_copy(&fromid), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        toid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSourceEntriesByOffset<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLine<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntriesByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLineWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntriesByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryString<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntryString(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryStringWide<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntryStringWide(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryOffsetRegions<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntryOffsetRegions(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryBySourceEntry<Identity: IDebugSymbols3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols3_Impl::GetSourceEntryBySourceEntry(this, core::mem::transmute_copy(&fromentry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&toentry)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSymbolOptions: GetSymbolOptions::<Identity, OFFSET>,
            AddSymbolOptions: AddSymbolOptions::<Identity, OFFSET>,
            RemoveSymbolOptions: RemoveSymbolOptions::<Identity, OFFSET>,
            SetSymbolOptions: SetSymbolOptions::<Identity, OFFSET>,
            GetNameByOffset: GetNameByOffset::<Identity, OFFSET>,
            GetOffsetByName: GetOffsetByName::<Identity, OFFSET>,
            GetNearNameByOffset: GetNearNameByOffset::<Identity, OFFSET>,
            GetLineByOffset: GetLineByOffset::<Identity, OFFSET>,
            GetOffsetByLine: GetOffsetByLine::<Identity, OFFSET>,
            GetNumberModules: GetNumberModules::<Identity, OFFSET>,
            GetModuleByIndex: GetModuleByIndex::<Identity, OFFSET>,
            GetModuleByModuleName: GetModuleByModuleName::<Identity, OFFSET>,
            GetModuleByOffset: GetModuleByOffset::<Identity, OFFSET>,
            GetModuleNames: GetModuleNames::<Identity, OFFSET>,
            GetModuleParameters: GetModuleParameters::<Identity, OFFSET>,
            GetSymbolModule: GetSymbolModule::<Identity, OFFSET>,
            GetTypeName: GetTypeName::<Identity, OFFSET>,
            GetTypeId: GetTypeId::<Identity, OFFSET>,
            GetTypeSize: GetTypeSize::<Identity, OFFSET>,
            GetFieldOffset: GetFieldOffset::<Identity, OFFSET>,
            GetSymbolTypeId: GetSymbolTypeId::<Identity, OFFSET>,
            GetOffsetTypeId: GetOffsetTypeId::<Identity, OFFSET>,
            ReadTypedDataVirtual: ReadTypedDataVirtual::<Identity, OFFSET>,
            WriteTypedDataVirtual: WriteTypedDataVirtual::<Identity, OFFSET>,
            OutputTypedDataVirtual: OutputTypedDataVirtual::<Identity, OFFSET>,
            ReadTypedDataPhysical: ReadTypedDataPhysical::<Identity, OFFSET>,
            WriteTypedDataPhysical: WriteTypedDataPhysical::<Identity, OFFSET>,
            OutputTypedDataPhysical: OutputTypedDataPhysical::<Identity, OFFSET>,
            GetScope: GetScope::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            ResetScope: ResetScope::<Identity, OFFSET>,
            GetScopeSymbolGroup: GetScopeSymbolGroup::<Identity, OFFSET>,
            CreateSymbolGroup: CreateSymbolGroup::<Identity, OFFSET>,
            StartSymbolMatch: StartSymbolMatch::<Identity, OFFSET>,
            GetNextSymbolMatch: GetNextSymbolMatch::<Identity, OFFSET>,
            EndSymbolMatch: EndSymbolMatch::<Identity, OFFSET>,
            Reload: Reload::<Identity, OFFSET>,
            GetSymbolPath: GetSymbolPath::<Identity, OFFSET>,
            SetSymbolPath: SetSymbolPath::<Identity, OFFSET>,
            AppendSymbolPath: AppendSymbolPath::<Identity, OFFSET>,
            GetImagePath: GetImagePath::<Identity, OFFSET>,
            SetImagePath: SetImagePath::<Identity, OFFSET>,
            AppendImagePath: AppendImagePath::<Identity, OFFSET>,
            GetSourcePath: GetSourcePath::<Identity, OFFSET>,
            GetSourcePathElement: GetSourcePathElement::<Identity, OFFSET>,
            SetSourcePath: SetSourcePath::<Identity, OFFSET>,
            AppendSourcePath: AppendSourcePath::<Identity, OFFSET>,
            FindSourceFile: FindSourceFile::<Identity, OFFSET>,
            GetSourceFileLineOffsets: GetSourceFileLineOffsets::<Identity, OFFSET>,
            GetModuleVersionInformation: GetModuleVersionInformation::<Identity, OFFSET>,
            GetModuleNameString: GetModuleNameString::<Identity, OFFSET>,
            GetConstantName: GetConstantName::<Identity, OFFSET>,
            GetFieldName: GetFieldName::<Identity, OFFSET>,
            GetTypeOptions: GetTypeOptions::<Identity, OFFSET>,
            AddTypeOptions: AddTypeOptions::<Identity, OFFSET>,
            RemoveTypeOptions: RemoveTypeOptions::<Identity, OFFSET>,
            SetTypeOptions: SetTypeOptions::<Identity, OFFSET>,
            GetNameByOffsetWide: GetNameByOffsetWide::<Identity, OFFSET>,
            GetOffsetByNameWide: GetOffsetByNameWide::<Identity, OFFSET>,
            GetNearNameByOffsetWide: GetNearNameByOffsetWide::<Identity, OFFSET>,
            GetLineByOffsetWide: GetLineByOffsetWide::<Identity, OFFSET>,
            GetOffsetByLineWide: GetOffsetByLineWide::<Identity, OFFSET>,
            GetModuleByModuleNameWide: GetModuleByModuleNameWide::<Identity, OFFSET>,
            GetSymbolModuleWide: GetSymbolModuleWide::<Identity, OFFSET>,
            GetTypeNameWide: GetTypeNameWide::<Identity, OFFSET>,
            GetTypeIdWide: GetTypeIdWide::<Identity, OFFSET>,
            GetFieldOffsetWide: GetFieldOffsetWide::<Identity, OFFSET>,
            GetSymbolTypeIdWide: GetSymbolTypeIdWide::<Identity, OFFSET>,
            GetScopeSymbolGroup2: GetScopeSymbolGroup2::<Identity, OFFSET>,
            CreateSymbolGroup2: CreateSymbolGroup2::<Identity, OFFSET>,
            StartSymbolMatchWide: StartSymbolMatchWide::<Identity, OFFSET>,
            GetNextSymbolMatchWide: GetNextSymbolMatchWide::<Identity, OFFSET>,
            ReloadWide: ReloadWide::<Identity, OFFSET>,
            GetSymbolPathWide: GetSymbolPathWide::<Identity, OFFSET>,
            SetSymbolPathWide: SetSymbolPathWide::<Identity, OFFSET>,
            AppendSymbolPathWide: AppendSymbolPathWide::<Identity, OFFSET>,
            GetImagePathWide: GetImagePathWide::<Identity, OFFSET>,
            SetImagePathWide: SetImagePathWide::<Identity, OFFSET>,
            AppendImagePathWide: AppendImagePathWide::<Identity, OFFSET>,
            GetSourcePathWide: GetSourcePathWide::<Identity, OFFSET>,
            GetSourcePathElementWide: GetSourcePathElementWide::<Identity, OFFSET>,
            SetSourcePathWide: SetSourcePathWide::<Identity, OFFSET>,
            AppendSourcePathWide: AppendSourcePathWide::<Identity, OFFSET>,
            FindSourceFileWide: FindSourceFileWide::<Identity, OFFSET>,
            GetSourceFileLineOffsetsWide: GetSourceFileLineOffsetsWide::<Identity, OFFSET>,
            GetModuleVersionInformationWide: GetModuleVersionInformationWide::<Identity, OFFSET>,
            GetModuleNameStringWide: GetModuleNameStringWide::<Identity, OFFSET>,
            GetConstantNameWide: GetConstantNameWide::<Identity, OFFSET>,
            GetFieldNameWide: GetFieldNameWide::<Identity, OFFSET>,
            IsManagedModule: IsManagedModule::<Identity, OFFSET>,
            GetModuleByModuleName2: GetModuleByModuleName2::<Identity, OFFSET>,
            GetModuleByModuleName2Wide: GetModuleByModuleName2Wide::<Identity, OFFSET>,
            GetModuleByOffset2: GetModuleByOffset2::<Identity, OFFSET>,
            AddSyntheticModule: AddSyntheticModule::<Identity, OFFSET>,
            AddSyntheticModuleWide: AddSyntheticModuleWide::<Identity, OFFSET>,
            RemoveSyntheticModule: RemoveSyntheticModule::<Identity, OFFSET>,
            GetCurrentScopeFrameIndex: GetCurrentScopeFrameIndex::<Identity, OFFSET>,
            SetScopeFrameByIndex: SetScopeFrameByIndex::<Identity, OFFSET>,
            SetScopeFromJitDebugInfo: SetScopeFromJitDebugInfo::<Identity, OFFSET>,
            SetScopeFromStoredEvent: SetScopeFromStoredEvent::<Identity, OFFSET>,
            OutputSymbolByOffset: OutputSymbolByOffset::<Identity, OFFSET>,
            GetFunctionEntryByOffset: GetFunctionEntryByOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffset: GetFieldTypeAndOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffsetWide: GetFieldTypeAndOffsetWide::<Identity, OFFSET>,
            AddSyntheticSymbol: AddSyntheticSymbol::<Identity, OFFSET>,
            AddSyntheticSymbolWide: AddSyntheticSymbolWide::<Identity, OFFSET>,
            RemoveSyntheticSymbol: RemoveSyntheticSymbol::<Identity, OFFSET>,
            GetSymbolEntriesByOffset: GetSymbolEntriesByOffset::<Identity, OFFSET>,
            GetSymbolEntriesByName: GetSymbolEntriesByName::<Identity, OFFSET>,
            GetSymbolEntriesByNameWide: GetSymbolEntriesByNameWide::<Identity, OFFSET>,
            GetSymbolEntryByToken: GetSymbolEntryByToken::<Identity, OFFSET>,
            GetSymbolEntryInformation: GetSymbolEntryInformation::<Identity, OFFSET>,
            GetSymbolEntryString: GetSymbolEntryString::<Identity, OFFSET>,
            GetSymbolEntryStringWide: GetSymbolEntryStringWide::<Identity, OFFSET>,
            GetSymbolEntryOffsetRegions: GetSymbolEntryOffsetRegions::<Identity, OFFSET>,
            GetSymbolEntryBySymbolEntry: GetSymbolEntryBySymbolEntry::<Identity, OFFSET>,
            GetSourceEntriesByOffset: GetSourceEntriesByOffset::<Identity, OFFSET>,
            GetSourceEntriesByLine: GetSourceEntriesByLine::<Identity, OFFSET>,
            GetSourceEntriesByLineWide: GetSourceEntriesByLineWide::<Identity, OFFSET>,
            GetSourceEntryString: GetSourceEntryString::<Identity, OFFSET>,
            GetSourceEntryStringWide: GetSourceEntryStringWide::<Identity, OFFSET>,
            GetSourceEntryOffsetRegions: GetSourceEntryOffsetRegions::<Identity, OFFSET>,
            GetSourceEntryBySourceEntry: GetSourceEntryBySourceEntry::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbols3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbols3 {}
windows_core::imp::define_interface!(IDebugSymbols4, IDebugSymbols4_Vtbl, 0xe391bbd8_9d8c_4418_840b_c006592a1752);
windows_core::imp::interface_hierarchy!(IDebugSymbols4, windows_core::IUnknown);
impl IDebugSymbols4 {
    pub unsafe fn GetSymbolOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByName)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffset)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLine<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLine)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberModules)(windows_core::Interface::as_raw(self), loaded as _, unloaded as _).ok() }
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModuleByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset)(windows_core::Interface::as_raw(self), offset, startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: Option<&mut [u8]>, imagenamesize: Option<*mut u32>, modulenamebuffer: Option<&mut [u8]>, modulenamesize: Option<*mut u32>, loadedimagenamebuffer: Option<&mut [u8]>, loadedimagenamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                imagenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(modulenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                modulenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                modulenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                loadedimagenamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleParameters)(windows_core::Interface::as_raw(self), count, bases.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModule)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeId<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeId)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeSize)(windows_core::Interface::as_raw(self), module, typeid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffset<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffset)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeId)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetTypeId)(windows_core::Interface::as_raw(self), offset, typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTypedDataPhysical)(windows_core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok() }
    }
    pub unsafe fn GetScope(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScope)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn ResetScope(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetScope)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup>
    where
        P1: windows_core::Param<IDebugSymbolGroup>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatch)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: Option<&mut [u8]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: Option<&mut [u8]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFile<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFile)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsets)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformation<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformation)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByNameWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u16]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffsetWide)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLineWide<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLineWide)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleNameWide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModuleWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeIdWide<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeIdWide)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffsetWide<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffsetWide)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeIdWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup2<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup2>
    where
        P1: windows_core::Param<IDebugSymbolGroup2>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup2)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup2)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatchWide)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: Option<&mut [u16]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReloadWide)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: Option<&mut [u16]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFileWide<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u16]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileWide)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformationWide<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformationWide)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2Wide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset2)(windows_core::Interface::as_raw(self), offset, startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticModule<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModule)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn AddSyntheticModuleWide<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModuleWide)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticModule)(windows_core::Interface::as_raw(self), base).ok() }
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentScopeFrameIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeFromJitDebugInfo)(windows_core::Interface::as_raw(self), outputcontrol, infooffset).ok() }
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, buffersize: u32, bufferneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFunctionEntryByOffset)(windows_core::Interface::as_raw(self), offset, flags, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, bufferneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffset<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffset)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbol<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbol)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbolWide<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbolWide)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticSymbol)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: Option<*mut DEBUG_MODULE_AND_ID>, displacements: Option<*mut u64>, idscount: u32, entries: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByOffset)(windows_core::Interface::as_raw(self), offset, flags, ids.unwrap_or(core::mem::zeroed()) as _, displacements.unwrap_or(core::mem::zeroed()) as _, idscount, entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByName)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByNameWide)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryByToken)(windows_core::Interface::as_raw(self), modulebase, token, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntryInformation)(windows_core::Interface::as_raw(self), id, info as _).ok() }
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(windows_core::Interface::as_raw(self), fromid, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLine<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLine)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLineWide<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLineWide)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntryBySourceEntry)(windows_core::Interface::as_raw(self), fromentry, flags, toentry as _).ok() }
    }
    pub unsafe fn GetScopeEx(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME_EX>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScopeEx)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScopeEx(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME_EX>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeEx)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByInlineContext)(windows_core::Interface::as_raw(self), offset, inlinecontext, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: Option<*mut u32>, filebuffer: Option<&mut [u16]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByInlineContextWide)(windows_core::Interface::as_raw(self), offset, inlinecontext, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputSymbolByInlineContext)(windows_core::Interface::as_raw(self), outputcontrol, flags, offset, inlinecontext).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u64, u32, *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub GetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResetScope: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCWSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64) -> windows_core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT,
    pub GetScopeEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME_EX, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScopeEx: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME_EX, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetNameByInlineContextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByInlineContextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub OutputSymbolByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, u32) -> windows_core::HRESULT,
}
pub trait IDebugSymbols4_Impl: windows_core::IUnknownImpl {
    fn GetSymbolOptions(&self) -> windows_core::Result<u32>;
    fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffset(&self, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByName(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffset(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLine(&self, line: u32, file: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()>;
    fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64>;
    fn GetModuleByModuleName(&self, name: &windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleNames(&self, 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::Result<()>;
    fn GetModuleParameters(&self, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()>;
    fn GetSymbolModule(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeId(&self, module: u64, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32>;
    fn GetFieldOffset(&self, module: u64, typeid: u32, field: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeId(&self, symbol: &windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn GetScope(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScope(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn ResetScope(&self) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup>) -> windows_core::Result<IDebugSymbolGroup>;
    fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup>;
    fn StartSymbolMatch(&self, pattern: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatch(&self, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()>;
    fn Reload(&self, module: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSymbolPath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSymbolPath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetImagePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendImagePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSourcePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElement(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSourcePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn FindSourceFile(&self, startelement: u32, file: &windows_core::PCSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsets(&self, file: &windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformation(&self, index: u32, base: u64, item: &windows_core::PCSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeOptions(&self) -> windows_core::Result<u32>;
    fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffsetWide(&self, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByNameWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffsetWide(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLineWide(&self, line: u32, file: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetModuleByModuleNameWide(&self, name: &windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetSymbolModuleWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeIdWide(&self, module: u64, name: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetFieldOffsetWide(&self, module: u64, typeid: u32, field: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeIdWide(&self, symbol: &windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup2(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup2>) -> windows_core::Result<IDebugSymbolGroup2>;
    fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2>;
    fn StartSymbolMatchWide(&self, pattern: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatchWide(&self, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn ReloadWide(&self, module: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSymbolPathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSymbolPathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetImagePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendImagePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSourcePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElementWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSourcePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn FindSourceFileWide(&self, startelement: u32, file: &windows_core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PWSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsetsWide(&self, file: &windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformationWide(&self, index: u32, base: u64, item: &windows_core::PCWSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2(&self, name: &windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2Wide(&self, name: &windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn AddSyntheticModule(&self, base: u64, size: u32, imagepath: &windows_core::PCSTR, modulename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn AddSyntheticModuleWide(&self, base: u64, size: u32, imagepath: &windows_core::PCWSTR, modulename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()>;
    fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32>;
    fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()>;
    fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> windows_core::Result<()>;
    fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()>;
    fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::Result<()>;
    fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffset(&self, module: u64, containertypeid: u32, field: &windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffsetWide(&self, module: u64, containertypeid: u32, field: &windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn AddSyntheticSymbol(&self, offset: u64, size: u32, name: &windows_core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn AddSyntheticSymbolWide(&self, offset: u64, size: u32, name: &windows_core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByName(&self, symbol: &windows_core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByNameWide(&self, symbol: &windows_core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()>;
    fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLine(&self, line: u32, file: &windows_core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLineWide(&self, line: u32, file: &windows_core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()>;
    fn GetScopeEx(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME_EX, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScopeEx(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME_EX, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: windows_core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::Result<()>;
}
impl IDebugSymbols4_Vtbl {
    pub const fn new<Identity: IDebugSymbols4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSymbolOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetSymbolOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbolOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::RemoveSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetSymbolOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetOffsetByName(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNearNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetLineByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLine<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetOffsetByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberModules<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNumberModules(this, core::mem::transmute_copy(&loaded), core::mem::transmute_copy(&unloaded)).into()
            }
        }
        unsafe extern "system" fn GetModuleByIndex<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetModuleByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByModuleName(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleNames<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleNames(
                    this,
                    core::mem::transmute_copy(&index),
                    core::mem::transmute_copy(&base),
                    core::mem::transmute_copy(&imagenamebuffer),
                    core::mem::transmute_copy(&imagenamebuffersize),
                    core::mem::transmute_copy(&imagenamesize),
                    core::mem::transmute_copy(&modulenamebuffer),
                    core::mem::transmute_copy(&modulenamebuffersize),
                    core::mem::transmute_copy(&modulenamesize),
                    core::mem::transmute_copy(&loadedimagenamebuffer),
                    core::mem::transmute_copy(&loadedimagenamebuffersize),
                    core::mem::transmute_copy(&loadedimagenamesize),
                )
                .into()
            }
        }
        unsafe extern "system" fn GetModuleParameters<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&bases), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModule<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetSymbolModule(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetTypeName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeId<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetTypeId(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeSize<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetTypeSize(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetFieldOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeId<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolTypeId(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetOffsetTypeId<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetOffsetTypeId(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataVirtual<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::ReadTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataVirtual<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::WriteTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataVirtual<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::OutputTypedDataVirtual(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataPhysical<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::ReadTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataPhysical<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::WriteTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataPhysical<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::OutputTypedDataPhysical(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetScope<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn ResetScope<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::ResetScope(this).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetScopeSymbolGroup(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::CreateSymbolGroup(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatch<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::StartSymbolMatch(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatch<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNextSymbolMatch(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn EndSymbolMatch<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::EndSymbolMatch(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Reload<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::Reload(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolPath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetSymbolPath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendSymbolPath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetImagePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetImagePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendImagePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourcePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElement<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourcePathElement(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetSourcePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePath<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendSourcePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFile<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::FindSourceFile(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsets<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceFileLineOffsets(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformation<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleVersionInformation(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameString<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleNameString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetConstantName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetFieldName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetTypeOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddTypeOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveTypeOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::RemoveTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetTypeOptions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffsetWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetOffsetByNameWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffsetWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNearNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffsetWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetLineByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLineWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetOffsetByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByModuleNameWide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModuleWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetSymbolModuleWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetTypeNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeIdWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCWSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetTypeIdWide(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffsetWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCWSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetFieldOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeIdWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolTypeIdWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup2<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetScopeSymbolGroup2(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup2<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::CreateSymbolGroup2(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatchWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::StartSymbolMatchWide(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatchWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNextSymbolMatchWide(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn ReloadWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::ReloadWide(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolPathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetSymbolPathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendSymbolPathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetImagePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetImagePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendImagePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourcePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElementWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourcePathElementWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetSourcePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePathWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AppendSourcePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::FindSourceFileWide(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsetsWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceFileLineOffsetsWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformationWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleVersionInformationWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameStringWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleNameStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetConstantNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetFieldNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn IsManagedModule<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::IsManagedModule(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByModuleName2(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2Wide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByModuleName2Wide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset2<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetModuleByOffset2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModule<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCSTR, modulename: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddSyntheticModule(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModuleWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCWSTR, modulename: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddSyntheticModuleWide(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticModule<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::RemoveSyntheticModule(this, core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetCurrentScopeFrameIndex<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetCurrentScopeFrameIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetScopeFrameByIndex<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetScopeFrameByIndex(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromJitDebugInfo<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetScopeFromJitDebugInfo(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&infooffset)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromStoredEvent<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetScopeFromStoredEvent(this).into()
            }
        }
        unsafe extern "system" fn OutputSymbolByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::OutputSymbolByOffset(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFunctionEntryByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetFunctionEntryByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bufferneeded)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetFieldTypeAndOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffsetWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetFieldTypeAndOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbol<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddSyntheticSymbol(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbolWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::AddSyntheticSymbolWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticSymbol<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::RemoveSyntheticSymbol(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&displacements), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByName<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntriesByName(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByNameWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntriesByNameWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryByToken<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetSymbolEntryByToken(this, core::mem::transmute_copy(&modulebase), core::mem::transmute_copy(&token)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolEntryInformation<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntryInformation(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&info)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryString<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntryString(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryStringWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntryStringWide(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryOffsetRegions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSymbolEntryOffsetRegions(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryBySymbolEntry<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols4_Impl::GetSymbolEntryBySymbolEntry(this, core::mem::transmute_copy(&fromid), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        toid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSourceEntriesByOffset<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLine<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntriesByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLineWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntriesByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryString<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntryString(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryStringWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntryStringWide(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryOffsetRegions<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntryOffsetRegions(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryBySourceEntry<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetSourceEntryBySourceEntry(this, core::mem::transmute_copy(&fromentry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&toentry)).into()
            }
        }
        unsafe extern "system" fn GetScopeEx<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetScopeEx(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScopeEx<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::SetScopeEx(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn GetNameByInlineContext<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNameByInlineContext(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetNameByInlineContextWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetNameByInlineContextWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByInlineContext<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetLineByInlineContext(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByInlineContextWide<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::GetLineByInlineContextWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn OutputSymbolByInlineContext<Identity: IDebugSymbols4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols4_Impl::OutputSymbolByInlineContext(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSymbolOptions: GetSymbolOptions::<Identity, OFFSET>,
            AddSymbolOptions: AddSymbolOptions::<Identity, OFFSET>,
            RemoveSymbolOptions: RemoveSymbolOptions::<Identity, OFFSET>,
            SetSymbolOptions: SetSymbolOptions::<Identity, OFFSET>,
            GetNameByOffset: GetNameByOffset::<Identity, OFFSET>,
            GetOffsetByName: GetOffsetByName::<Identity, OFFSET>,
            GetNearNameByOffset: GetNearNameByOffset::<Identity, OFFSET>,
            GetLineByOffset: GetLineByOffset::<Identity, OFFSET>,
            GetOffsetByLine: GetOffsetByLine::<Identity, OFFSET>,
            GetNumberModules: GetNumberModules::<Identity, OFFSET>,
            GetModuleByIndex: GetModuleByIndex::<Identity, OFFSET>,
            GetModuleByModuleName: GetModuleByModuleName::<Identity, OFFSET>,
            GetModuleByOffset: GetModuleByOffset::<Identity, OFFSET>,
            GetModuleNames: GetModuleNames::<Identity, OFFSET>,
            GetModuleParameters: GetModuleParameters::<Identity, OFFSET>,
            GetSymbolModule: GetSymbolModule::<Identity, OFFSET>,
            GetTypeName: GetTypeName::<Identity, OFFSET>,
            GetTypeId: GetTypeId::<Identity, OFFSET>,
            GetTypeSize: GetTypeSize::<Identity, OFFSET>,
            GetFieldOffset: GetFieldOffset::<Identity, OFFSET>,
            GetSymbolTypeId: GetSymbolTypeId::<Identity, OFFSET>,
            GetOffsetTypeId: GetOffsetTypeId::<Identity, OFFSET>,
            ReadTypedDataVirtual: ReadTypedDataVirtual::<Identity, OFFSET>,
            WriteTypedDataVirtual: WriteTypedDataVirtual::<Identity, OFFSET>,
            OutputTypedDataVirtual: OutputTypedDataVirtual::<Identity, OFFSET>,
            ReadTypedDataPhysical: ReadTypedDataPhysical::<Identity, OFFSET>,
            WriteTypedDataPhysical: WriteTypedDataPhysical::<Identity, OFFSET>,
            OutputTypedDataPhysical: OutputTypedDataPhysical::<Identity, OFFSET>,
            GetScope: GetScope::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            ResetScope: ResetScope::<Identity, OFFSET>,
            GetScopeSymbolGroup: GetScopeSymbolGroup::<Identity, OFFSET>,
            CreateSymbolGroup: CreateSymbolGroup::<Identity, OFFSET>,
            StartSymbolMatch: StartSymbolMatch::<Identity, OFFSET>,
            GetNextSymbolMatch: GetNextSymbolMatch::<Identity, OFFSET>,
            EndSymbolMatch: EndSymbolMatch::<Identity, OFFSET>,
            Reload: Reload::<Identity, OFFSET>,
            GetSymbolPath: GetSymbolPath::<Identity, OFFSET>,
            SetSymbolPath: SetSymbolPath::<Identity, OFFSET>,
            AppendSymbolPath: AppendSymbolPath::<Identity, OFFSET>,
            GetImagePath: GetImagePath::<Identity, OFFSET>,
            SetImagePath: SetImagePath::<Identity, OFFSET>,
            AppendImagePath: AppendImagePath::<Identity, OFFSET>,
            GetSourcePath: GetSourcePath::<Identity, OFFSET>,
            GetSourcePathElement: GetSourcePathElement::<Identity, OFFSET>,
            SetSourcePath: SetSourcePath::<Identity, OFFSET>,
            AppendSourcePath: AppendSourcePath::<Identity, OFFSET>,
            FindSourceFile: FindSourceFile::<Identity, OFFSET>,
            GetSourceFileLineOffsets: GetSourceFileLineOffsets::<Identity, OFFSET>,
            GetModuleVersionInformation: GetModuleVersionInformation::<Identity, OFFSET>,
            GetModuleNameString: GetModuleNameString::<Identity, OFFSET>,
            GetConstantName: GetConstantName::<Identity, OFFSET>,
            GetFieldName: GetFieldName::<Identity, OFFSET>,
            GetTypeOptions: GetTypeOptions::<Identity, OFFSET>,
            AddTypeOptions: AddTypeOptions::<Identity, OFFSET>,
            RemoveTypeOptions: RemoveTypeOptions::<Identity, OFFSET>,
            SetTypeOptions: SetTypeOptions::<Identity, OFFSET>,
            GetNameByOffsetWide: GetNameByOffsetWide::<Identity, OFFSET>,
            GetOffsetByNameWide: GetOffsetByNameWide::<Identity, OFFSET>,
            GetNearNameByOffsetWide: GetNearNameByOffsetWide::<Identity, OFFSET>,
            GetLineByOffsetWide: GetLineByOffsetWide::<Identity, OFFSET>,
            GetOffsetByLineWide: GetOffsetByLineWide::<Identity, OFFSET>,
            GetModuleByModuleNameWide: GetModuleByModuleNameWide::<Identity, OFFSET>,
            GetSymbolModuleWide: GetSymbolModuleWide::<Identity, OFFSET>,
            GetTypeNameWide: GetTypeNameWide::<Identity, OFFSET>,
            GetTypeIdWide: GetTypeIdWide::<Identity, OFFSET>,
            GetFieldOffsetWide: GetFieldOffsetWide::<Identity, OFFSET>,
            GetSymbolTypeIdWide: GetSymbolTypeIdWide::<Identity, OFFSET>,
            GetScopeSymbolGroup2: GetScopeSymbolGroup2::<Identity, OFFSET>,
            CreateSymbolGroup2: CreateSymbolGroup2::<Identity, OFFSET>,
            StartSymbolMatchWide: StartSymbolMatchWide::<Identity, OFFSET>,
            GetNextSymbolMatchWide: GetNextSymbolMatchWide::<Identity, OFFSET>,
            ReloadWide: ReloadWide::<Identity, OFFSET>,
            GetSymbolPathWide: GetSymbolPathWide::<Identity, OFFSET>,
            SetSymbolPathWide: SetSymbolPathWide::<Identity, OFFSET>,
            AppendSymbolPathWide: AppendSymbolPathWide::<Identity, OFFSET>,
            GetImagePathWide: GetImagePathWide::<Identity, OFFSET>,
            SetImagePathWide: SetImagePathWide::<Identity, OFFSET>,
            AppendImagePathWide: AppendImagePathWide::<Identity, OFFSET>,
            GetSourcePathWide: GetSourcePathWide::<Identity, OFFSET>,
            GetSourcePathElementWide: GetSourcePathElementWide::<Identity, OFFSET>,
            SetSourcePathWide: SetSourcePathWide::<Identity, OFFSET>,
            AppendSourcePathWide: AppendSourcePathWide::<Identity, OFFSET>,
            FindSourceFileWide: FindSourceFileWide::<Identity, OFFSET>,
            GetSourceFileLineOffsetsWide: GetSourceFileLineOffsetsWide::<Identity, OFFSET>,
            GetModuleVersionInformationWide: GetModuleVersionInformationWide::<Identity, OFFSET>,
            GetModuleNameStringWide: GetModuleNameStringWide::<Identity, OFFSET>,
            GetConstantNameWide: GetConstantNameWide::<Identity, OFFSET>,
            GetFieldNameWide: GetFieldNameWide::<Identity, OFFSET>,
            IsManagedModule: IsManagedModule::<Identity, OFFSET>,
            GetModuleByModuleName2: GetModuleByModuleName2::<Identity, OFFSET>,
            GetModuleByModuleName2Wide: GetModuleByModuleName2Wide::<Identity, OFFSET>,
            GetModuleByOffset2: GetModuleByOffset2::<Identity, OFFSET>,
            AddSyntheticModule: AddSyntheticModule::<Identity, OFFSET>,
            AddSyntheticModuleWide: AddSyntheticModuleWide::<Identity, OFFSET>,
            RemoveSyntheticModule: RemoveSyntheticModule::<Identity, OFFSET>,
            GetCurrentScopeFrameIndex: GetCurrentScopeFrameIndex::<Identity, OFFSET>,
            SetScopeFrameByIndex: SetScopeFrameByIndex::<Identity, OFFSET>,
            SetScopeFromJitDebugInfo: SetScopeFromJitDebugInfo::<Identity, OFFSET>,
            SetScopeFromStoredEvent: SetScopeFromStoredEvent::<Identity, OFFSET>,
            OutputSymbolByOffset: OutputSymbolByOffset::<Identity, OFFSET>,
            GetFunctionEntryByOffset: GetFunctionEntryByOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffset: GetFieldTypeAndOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffsetWide: GetFieldTypeAndOffsetWide::<Identity, OFFSET>,
            AddSyntheticSymbol: AddSyntheticSymbol::<Identity, OFFSET>,
            AddSyntheticSymbolWide: AddSyntheticSymbolWide::<Identity, OFFSET>,
            RemoveSyntheticSymbol: RemoveSyntheticSymbol::<Identity, OFFSET>,
            GetSymbolEntriesByOffset: GetSymbolEntriesByOffset::<Identity, OFFSET>,
            GetSymbolEntriesByName: GetSymbolEntriesByName::<Identity, OFFSET>,
            GetSymbolEntriesByNameWide: GetSymbolEntriesByNameWide::<Identity, OFFSET>,
            GetSymbolEntryByToken: GetSymbolEntryByToken::<Identity, OFFSET>,
            GetSymbolEntryInformation: GetSymbolEntryInformation::<Identity, OFFSET>,
            GetSymbolEntryString: GetSymbolEntryString::<Identity, OFFSET>,
            GetSymbolEntryStringWide: GetSymbolEntryStringWide::<Identity, OFFSET>,
            GetSymbolEntryOffsetRegions: GetSymbolEntryOffsetRegions::<Identity, OFFSET>,
            GetSymbolEntryBySymbolEntry: GetSymbolEntryBySymbolEntry::<Identity, OFFSET>,
            GetSourceEntriesByOffset: GetSourceEntriesByOffset::<Identity, OFFSET>,
            GetSourceEntriesByLine: GetSourceEntriesByLine::<Identity, OFFSET>,
            GetSourceEntriesByLineWide: GetSourceEntriesByLineWide::<Identity, OFFSET>,
            GetSourceEntryString: GetSourceEntryString::<Identity, OFFSET>,
            GetSourceEntryStringWide: GetSourceEntryStringWide::<Identity, OFFSET>,
            GetSourceEntryOffsetRegions: GetSourceEntryOffsetRegions::<Identity, OFFSET>,
            GetSourceEntryBySourceEntry: GetSourceEntryBySourceEntry::<Identity, OFFSET>,
            GetScopeEx: GetScopeEx::<Identity, OFFSET>,
            SetScopeEx: SetScopeEx::<Identity, OFFSET>,
            GetNameByInlineContext: GetNameByInlineContext::<Identity, OFFSET>,
            GetNameByInlineContextWide: GetNameByInlineContextWide::<Identity, OFFSET>,
            GetLineByInlineContext: GetLineByInlineContext::<Identity, OFFSET>,
            GetLineByInlineContextWide: GetLineByInlineContextWide::<Identity, OFFSET>,
            OutputSymbolByInlineContext: OutputSymbolByInlineContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbols4 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbols4 {}
windows_core::imp::define_interface!(IDebugSymbols5, IDebugSymbols5_Vtbl, 0xc65fa83e_1e69_475e_8e0e_b5d79e9cc17e);
windows_core::imp::interface_hierarchy!(IDebugSymbols5, windows_core::IUnknown);
impl IDebugSymbols5 {
    pub unsafe fn GetSymbolOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffset(&self, offset: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByName<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByName)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffset(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffset)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLine<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLine)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNumberModules)(windows_core::Interface::as_raw(self), loaded as _, unloaded as _).ok() }
    }
    pub unsafe fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetModuleByIndex)(windows_core::Interface::as_raw(self), index, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleName<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset)(windows_core::Interface::as_raw(self), offset, startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNames(&self, index: u32, base: u64, imagenamebuffer: Option<&mut [u8]>, imagenamesize: Option<*mut u32>, modulenamebuffer: Option<&mut [u8]>, modulenamesize: Option<*mut u32>, loadedimagenamebuffer: Option<&mut [u8]>, loadedimagenamesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe {
            (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().try_into().unwrap()),
                imagenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(modulenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                modulenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                modulenamesize.unwrap_or(core::mem::zeroed()) as _,
                core::mem::transmute(loadedimagenamebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())),
                loadedimagenamebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()),
                loadedimagenamesize.unwrap_or(core::mem::zeroed()) as _,
            )
            .ok()
        }
    }
    pub unsafe fn GetModuleParameters(&self, count: u32, bases: Option<*const u64>, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleParameters)(windows_core::Interface::as_raw(self), count, bases.unwrap_or(core::mem::zeroed()) as _, start, params as _).ok() }
    }
    pub unsafe fn GetSymbolModule<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModule)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeId<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeId)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeSize)(windows_core::Interface::as_raw(self), module, typeid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffset<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffset)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeId<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeId)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOffsetTypeId)(windows_core::Interface::as_raw(self), offset, typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataVirtual)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer as _, buffersize, bytesread.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteTypedDataPhysical)(windows_core::Interface::as_raw(self), offset, module, typeid, buffer, buffersize, byteswritten.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OutputTypedDataPhysical)(windows_core::Interface::as_raw(self), outputcontrol, offset, module, typeid, flags).ok() }
    }
    pub unsafe fn GetScope(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScope)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScope(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn ResetScope(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetScope)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup>
    where
        P1: windows_core::Param<IDebugSymbolGroup>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatch<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatch)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatch(&self, handle: u64, buffer: Option<&mut [u8]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()> {
        unsafe { (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::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Reload)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePath(&self, buffer: Option<&mut [u8]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElement(&self, index: u32, buffer: Option<&mut [u8]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePath<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePath)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePath<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePath)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFile<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u8]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFile)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsets<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsets)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformation<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformation)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTypeOptions)(windows_core::Interface::as_raw(self), options).ok() }
    }
    pub unsafe fn GetNameByOffsetWide(&self, offset: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByNameWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByNameWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByOffsetWide(&self, offset: u64, line: Option<*mut u32>, filebuffer: Option<&mut [u16]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByOffsetWide)(windows_core::Interface::as_raw(self), offset, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetOffsetByLineWide<P1>(&self, line: u32, file: P1) -> windows_core::Result<u64>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOffsetByLineWide)(windows_core::Interface::as_raw(self), line, file.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetModuleByModuleNameWide<P0>(&self, name: P0, startindex: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleNameWide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolModuleWide<P0>(&self, symbol: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolModuleWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetTypeIdWide<P1>(&self, module: u64, name: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeIdWide)(windows_core::Interface::as_raw(self), module, name.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldOffsetWide<P2>(&self, module: u64, typeid: u32, field: P2) -> windows_core::Result<u32>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOffsetWide)(windows_core::Interface::as_raw(self), module, typeid, field.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolTypeIdWide<P0>(&self, symbol: P0, typeid: *mut u32, module: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolTypeIdWide)(windows_core::Interface::as_raw(self), symbol.param().abi(), typeid as _, module.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetScopeSymbolGroup2<P1>(&self, flags: u32, update: P1) -> windows_core::Result<IDebugSymbolGroup2>
    where
        P1: windows_core::Param<IDebugSymbolGroup2>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetScopeSymbolGroup2)(windows_core::Interface::as_raw(self), flags, update.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSymbolGroup2)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn StartSymbolMatchWide<P0>(&self, pattern: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StartSymbolMatchWide)(windows_core::Interface::as_raw(self), pattern.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNextSymbolMatchWide(&self, handle: u64, buffer: Option<&mut [u16]>, matchsize: Option<*mut u32>, offset: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), matchsize.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn ReloadWide<P0>(&self, module: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReloadWide)(windows_core::Interface::as_raw(self), module.param().abi()).ok() }
    }
    pub unsafe fn GetSymbolPathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSymbolPathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSymbolPathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSymbolPathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSymbolPathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetImagePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetImagePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetImagePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendImagePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendImagePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn GetSourcePathWide(&self, buffer: Option<&mut [u16]>, pathsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), pathsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourcePathElementWide(&self, index: u32, buffer: Option<&mut [u16]>, elementsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), elementsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetSourcePathWide<P0>(&self, path: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSourcePathWide)(windows_core::Interface::as_raw(self), path.param().abi()).ok() }
    }
    pub unsafe fn AppendSourcePathWide<P0>(&self, addition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendSourcePathWide)(windows_core::Interface::as_raw(self), addition.param().abi()).ok() }
    }
    pub unsafe fn FindSourceFileWide<P1>(&self, startelement: u32, file: P1, flags: u32, foundelement: Option<*mut u32>, buffer: Option<&mut [u16]>, foundsize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindSourceFileWide)(windows_core::Interface::as_raw(self), startelement, file.param().abi(), flags, foundelement.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(buffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), buffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), foundsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceFileLineOffsetsWide<P0>(&self, file: P0, buffer: Option<&mut [u64]>, filelines: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceFileLineOffsetsWide)(windows_core::Interface::as_raw(self), file.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().try_into().unwrap()), filelines.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleVersionInformationWide<P2>(&self, index: u32, base: u64, item: P2, buffer: Option<*mut core::ffi::c_void>, buffersize: u32, verinfosize: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleVersionInformationWide)(windows_core::Interface::as_raw(self), index, base, item.param().abi(), buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, verinfosize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()> {
        unsafe { (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: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByModuleName2Wide<P0>(&self, name: P0, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByModuleName2Wide)(windows_core::Interface::as_raw(self), name.param().abi(), startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: Option<*mut u32>, base: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetModuleByOffset2)(windows_core::Interface::as_raw(self), offset, startindex, flags, index.unwrap_or(core::mem::zeroed()) as _, base.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticModule<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
        P3: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModule)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn AddSyntheticModuleWide<P2, P3>(&self, base: u64, size: u32, imagepath: P2, modulename: P3, flags: u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticModuleWide)(windows_core::Interface::as_raw(self), base, size, imagepath.param().abi(), modulename.param().abi(), flags).ok() }
    }
    pub unsafe fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticModule)(windows_core::Interface::as_raw(self), base).ok() }
    }
    pub unsafe fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentScopeFrameIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeFromJitDebugInfo)(windows_core::Interface::as_raw(self), outputcontrol, infooffset).ok() }
    }
    pub unsafe fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()> {
        unsafe { (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<()> {
        unsafe { (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: Option<*mut core::ffi::c_void>, buffersize: u32, bufferneeded: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFunctionEntryByOffset)(windows_core::Interface::as_raw(self), offset, flags, buffer.unwrap_or(core::mem::zeroed()) as _, buffersize, bufferneeded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffset<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffset)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetFieldTypeAndOffsetWide<P2>(&self, module: u64, containertypeid: u32, field: P2, fieldtypeid: Option<*mut u32>, offset: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFieldTypeAndOffsetWide)(windows_core::Interface::as_raw(self), module, containertypeid, field.param().abi(), fieldtypeid.unwrap_or(core::mem::zeroed()) as _, offset.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbol<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbol)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddSyntheticSymbolWide<P2>(&self, offset: u64, size: u32, name: P2, flags: u32, id: Option<*mut DEBUG_MODULE_AND_ID>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddSyntheticSymbolWide)(windows_core::Interface::as_raw(self), offset, size, name.param().abi(), flags, id.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveSyntheticSymbol)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: Option<*mut DEBUG_MODULE_AND_ID>, displacements: Option<*mut u64>, idscount: u32, entries: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByOffset)(windows_core::Interface::as_raw(self), offset, flags, ids.unwrap_or(core::mem::zeroed()) as _, displacements.unwrap_or(core::mem::zeroed()) as _, idscount, entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByName<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByName)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntriesByNameWide<P0>(&self, symbol: P0, flags: u32, ids: Option<&mut [DEBUG_MODULE_AND_ID]>, entries: Option<*mut u32>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntriesByNameWide)(windows_core::Interface::as_raw(self), symbol.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().try_into().unwrap()), entries.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryByToken)(windows_core::Interface::as_raw(self), modulebase, token, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSymbolEntryInformation)(windows_core::Interface::as_raw(self), id, info as _).ok() }
    }
    pub unsafe fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSymbolEntryBySymbolEntry)(windows_core::Interface::as_raw(self), fromid, flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLine<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLine)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntriesByLineWide<P1>(&self, line: u32, file: P1, flags: u32, entries: Option<&mut [DEBUG_SYMBOL_SOURCE_ENTRY]>, entriesavail: Option<*mut u32>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntriesByLineWide)(windows_core::Interface::as_raw(self), line, file.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().try_into().unwrap()), entriesavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u8]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: Option<&mut [u16]>, stringsize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), stringsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: Option<&mut [DEBUG_OFFSET_REGION]>, regionsavail: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), regionsavail.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSourceEntryBySourceEntry)(windows_core::Interface::as_raw(self), fromentry, flags, toentry as _).ok() }
    }
    pub unsafe fn GetScopeEx(&self, instructionoffset: Option<*mut u64>, scopeframe: Option<*mut DEBUG_STACK_FRAME_EX>, scopecontext: Option<*mut core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetScopeEx)(windows_core::Interface::as_raw(self), instructionoffset.unwrap_or(core::mem::zeroed()) as _, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn SetScopeEx(&self, instructionoffset: u64, scopeframe: Option<*const DEBUG_STACK_FRAME_EX>, scopecontext: Option<*const core::ffi::c_void>, scopecontextsize: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeEx)(windows_core::Interface::as_raw(self), instructionoffset, scopeframe.unwrap_or(core::mem::zeroed()) as _, scopecontext.unwrap_or(core::mem::zeroed()) as _, scopecontextsize).ok() }
    }
    pub unsafe fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: Option<&mut [u8]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: Option<&mut [u16]>, namesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: Option<*mut u32>, filebuffer: Option<&mut [u8]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByInlineContext)(windows_core::Interface::as_raw(self), offset, inlinecontext, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: Option<*mut u32>, filebuffer: Option<&mut [u16]>, filesize: Option<*mut u32>, displacement: Option<*mut u64>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLineByInlineContextWide)(windows_core::Interface::as_raw(self), offset, inlinecontext, line.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(filebuffer.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), filebuffer.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), filesize.unwrap_or(core::mem::zeroed()) as _, displacement.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::Result<()> {
        unsafe { (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> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentScopeFrameIndexEx)(windows_core::Interface::as_raw(self), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetScopeFrameByIndexEx(&self, flags: u32, index: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScopeFrameByIndexEx)(windows_core::Interface::as_raw(self), flags, index).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSymbols5_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSymbolOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNumberModules: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleNames: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleParameters: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const u64, u32, *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT,
    pub GetSymbolModule: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetTypeSize: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetTypeId: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReadTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataVirtual: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub ReadTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub WriteTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u32, *const core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OutputTypedDataPhysical: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, u64, u32, u32) -> windows_core::HRESULT,
    pub GetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResetScope: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub EndSymbolMatch: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub Reload: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSymbolPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendImagePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElement: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub AppendSourcePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub FindSourceFile: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsets: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameString: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldName: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AddTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RemoveTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTypeOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNearNameByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, i32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetOffsetByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetSymbolModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetTypeNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetFieldOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolTypeIdWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetScopeSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateSymbolGroup2: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64) -> windows_core::HRESULT,
    pub GetNextSymbolMatchWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub ReloadWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSymbolPathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendImagePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourcePathElementWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AppendSourcePathWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub FindSourceFileWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceFileLineOffsetsWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleVersionInformationWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64, windows_core::PCWSTR, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetModuleNameStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetConstantNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u64, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub IsManagedModule: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByModuleName2Wide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetModuleByOffset2: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub AddSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub AddSyntheticModuleWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub RemoveSyntheticModule: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetCurrentScopeFrameIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetScopeFrameByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScopeFromJitDebugInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u64) -> windows_core::HRESULT,
    pub SetScopeFromStoredEvent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OutputSymbolByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64) -> windows_core::HRESULT,
    pub GetFunctionEntryByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetFieldTypeAndOffsetWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub AddSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub AddSyntheticSymbolWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub RemoveSyntheticSymbol: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID, *mut u64, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntriesByNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut DEBUG_MODULE_AND_ID, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryByToken: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSymbolEntryInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT,
    pub GetSymbolEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSymbolEntryBySymbolEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_MODULE_AND_ID, u32, *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT,
    pub GetSourceEntriesByOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntriesByLineWide: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryString: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryStringWide: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryOffsetRegions: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_OFFSET_REGION, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSourceEntryBySourceEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *const DEBUG_SYMBOL_SOURCE_ENTRY, u32, *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT,
    pub GetScopeEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut DEBUG_STACK_FRAME_EX, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetScopeEx: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *const DEBUG_STACK_FRAME_EX, *const core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNameByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetNameByInlineContextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, windows_core::PSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub GetLineByInlineContextWide: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u32, *mut u32, windows_core::PWSTR, u32, *mut u32, *mut u64) -> windows_core::HRESULT,
    pub OutputSymbolByInlineContext: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u64, u32) -> windows_core::HRESULT,
    pub GetCurrentScopeFrameIndexEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SetScopeFrameByIndexEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
}
pub trait IDebugSymbols5_Impl: windows_core::IUnknownImpl {
    fn GetSymbolOptions(&self) -> windows_core::Result<u32>;
    fn AddSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetSymbolOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffset(&self, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByName(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffset(&self, offset: u64, delta: i32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffset(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLine(&self, line: u32, file: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNumberModules(&self, loaded: *mut u32, unloaded: *mut u32) -> windows_core::Result<()>;
    fn GetModuleByIndex(&self, index: u32) -> windows_core::Result<u64>;
    fn GetModuleByModuleName(&self, name: &windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset(&self, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleNames(&self, 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::Result<()>;
    fn GetModuleParameters(&self, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::Result<()>;
    fn GetSymbolModule(&self, symbol: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetTypeName(&self, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeId(&self, module: u64, name: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetTypeSize(&self, module: u64, typeid: u32) -> windows_core::Result<u32>;
    fn GetFieldOffset(&self, module: u64, typeid: u32, field: &windows_core::PCSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeId(&self, symbol: &windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetTypeId(&self, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn ReadTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataVirtual(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataVirtual(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn ReadTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bytesread: *mut u32) -> windows_core::Result<()>;
    fn WriteTypedDataPhysical(&self, offset: u64, module: u64, typeid: u32, buffer: *const core::ffi::c_void, buffersize: u32, byteswritten: *mut u32) -> windows_core::Result<()>;
    fn OutputTypedDataPhysical(&self, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::Result<()>;
    fn GetScope(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScope(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn ResetScope(&self) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup>) -> windows_core::Result<IDebugSymbolGroup>;
    fn CreateSymbolGroup(&self) -> windows_core::Result<IDebugSymbolGroup>;
    fn StartSymbolMatch(&self, pattern: &windows_core::PCSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatch(&self, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn EndSymbolMatch(&self, handle: u64) -> windows_core::Result<()>;
    fn Reload(&self, module: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSymbolPath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSymbolPath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetImagePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendImagePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetSourcePath(&self, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElement(&self, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePath(&self, path: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn AppendSourcePath(&self, addition: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn FindSourceFile(&self, startelement: u32, file: &windows_core::PCSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsets(&self, file: &windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformation(&self, index: u32, base: u64, item: &windows_core::PCSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameString(&self, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantName(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldName(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeOptions(&self) -> windows_core::Result<u32>;
    fn AddTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn RemoveTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn SetTypeOptions(&self, options: u32) -> windows_core::Result<()>;
    fn GetNameByOffsetWide(&self, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByNameWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNearNameByOffsetWide(&self, offset: u64, delta: i32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByOffsetWide(&self, offset: u64, line: *mut u32, filebuffer: windows_core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetOffsetByLineWide(&self, line: u32, file: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetModuleByModuleNameWide(&self, name: &windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetSymbolModuleWide(&self, symbol: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetTypeNameWide(&self, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetTypeIdWide(&self, module: u64, name: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetFieldOffsetWide(&self, module: u64, typeid: u32, field: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn GetSymbolTypeIdWide(&self, symbol: &windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::Result<()>;
    fn GetScopeSymbolGroup2(&self, flags: u32, update: windows_core::Ref<'_, IDebugSymbolGroup2>) -> windows_core::Result<IDebugSymbolGroup2>;
    fn CreateSymbolGroup2(&self) -> windows_core::Result<IDebugSymbolGroup2>;
    fn StartSymbolMatchWide(&self, pattern: &windows_core::PCWSTR) -> windows_core::Result<u64>;
    fn GetNextSymbolMatchWide(&self, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::Result<()>;
    fn ReloadWide(&self, module: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSymbolPathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetSymbolPathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSymbolPathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetImagePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn SetImagePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendImagePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetSourcePathWide(&self, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourcePathElementWide(&self, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::Result<()>;
    fn SetSourcePathWide(&self, path: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AppendSourcePathWide(&self, addition: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn FindSourceFileWide(&self, startelement: u32, file: &windows_core::PCWSTR, flags: u32, foundelement: *mut u32, buffer: windows_core::PWSTR, buffersize: u32, foundsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceFileLineOffsetsWide(&self, file: &windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::Result<()>;
    fn GetModuleVersionInformationWide(&self, index: u32, base: u64, item: &windows_core::PCWSTR, buffer: *mut core::ffi::c_void, buffersize: u32, verinfosize: *mut u32) -> windows_core::Result<()>;
    fn GetModuleNameStringWide(&self, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetConstantNameWide(&self, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetFieldNameWide(&self, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn IsManagedModule(&self, index: u32, base: u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2(&self, name: &windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByModuleName2Wide(&self, name: &windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn GetModuleByOffset2(&self, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::Result<()>;
    fn AddSyntheticModule(&self, base: u64, size: u32, imagepath: &windows_core::PCSTR, modulename: &windows_core::PCSTR, flags: u32) -> windows_core::Result<()>;
    fn AddSyntheticModuleWide(&self, base: u64, size: u32, imagepath: &windows_core::PCWSTR, modulename: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<()>;
    fn RemoveSyntheticModule(&self, base: u64) -> windows_core::Result<()>;
    fn GetCurrentScopeFrameIndex(&self) -> windows_core::Result<u32>;
    fn SetScopeFrameByIndex(&self, index: u32) -> windows_core::Result<()>;
    fn SetScopeFromJitDebugInfo(&self, outputcontrol: u32, infooffset: u64) -> windows_core::Result<()>;
    fn SetScopeFromStoredEvent(&self) -> windows_core::Result<()>;
    fn OutputSymbolByOffset(&self, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::Result<()>;
    fn GetFunctionEntryByOffset(&self, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffset(&self, module: u64, containertypeid: u32, field: &windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn GetFieldTypeAndOffsetWide(&self, module: u64, containertypeid: u32, field: &windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::Result<()>;
    fn AddSyntheticSymbol(&self, offset: u64, size: u32, name: &windows_core::PCSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn AddSyntheticSymbolWide(&self, offset: u64, size: u32, name: &windows_core::PCWSTR, flags: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn RemoveSyntheticSymbol(&self, id: *const DEBUG_MODULE_AND_ID) -> windows_core::Result<()>;
    fn GetSymbolEntriesByOffset(&self, offset: u64, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, displacements: *mut u64, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByName(&self, symbol: &windows_core::PCSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntriesByNameWide(&self, symbol: &windows_core::PCWSTR, flags: u32, ids: *mut DEBUG_MODULE_AND_ID, idscount: u32, entries: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryByToken(&self, modulebase: u64, token: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSymbolEntryInformation(&self, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::Result<()>;
    fn GetSymbolEntryString(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryStringWide(&self, id: *const DEBUG_MODULE_AND_ID, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryOffsetRegions(&self, id: *const DEBUG_MODULE_AND_ID, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSymbolEntryBySymbolEntry(&self, fromid: *const DEBUG_MODULE_AND_ID, flags: u32) -> windows_core::Result<DEBUG_MODULE_AND_ID>;
    fn GetSourceEntriesByOffset(&self, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLine(&self, line: u32, file: &windows_core::PCSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntriesByLineWide(&self, line: u32, file: &windows_core::PCWSTR, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryString(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryStringWide(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, which: u32, buffer: windows_core::PWSTR, buffersize: u32, stringsize: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryOffsetRegions(&self, entry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, regions: *mut DEBUG_OFFSET_REGION, regionscount: u32, regionsavail: *mut u32) -> windows_core::Result<()>;
    fn GetSourceEntryBySourceEntry(&self, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::Result<()>;
    fn GetScopeEx(&self, instructionoffset: *mut u64, scopeframe: *mut DEBUG_STACK_FRAME_EX, scopecontext: *mut core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn SetScopeEx(&self, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME_EX, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::Result<()>;
    fn GetNameByInlineContext(&self, offset: u64, inlinecontext: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetNameByInlineContextWide(&self, offset: u64, inlinecontext: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByInlineContext(&self, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: windows_core::PSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn GetLineByInlineContextWide(&self, offset: u64, inlinecontext: u32, line: *mut u32, filebuffer: windows_core::PWSTR, filebuffersize: u32, filesize: *mut u32, displacement: *mut u64) -> windows_core::Result<()>;
    fn OutputSymbolByInlineContext(&self, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::Result<()>;
    fn GetCurrentScopeFrameIndexEx(&self, flags: u32) -> windows_core::Result<u32>;
    fn SetScopeFrameByIndexEx(&self, flags: u32, index: u32) -> windows_core::Result<()>;
}
impl IDebugSymbols5_Vtbl {
    pub const fn new<Identity: IDebugSymbols5_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSymbolOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetSymbolOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddSymbolOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveSymbolOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::RemoveSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetSymbolOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetSymbolOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetOffsetByName(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNearNameByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetLineByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLine<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetOffsetByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberModules<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, loaded: *mut u32, unloaded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNumberModules(this, core::mem::transmute_copy(&loaded), core::mem::transmute_copy(&unloaded)).into()
            }
        }
        unsafe extern "system" fn GetModuleByIndex<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetModuleByIndex(this, core::mem::transmute_copy(&index)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByModuleName(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleNames<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleNames(
                    this,
                    core::mem::transmute_copy(&index),
                    core::mem::transmute_copy(&base),
                    core::mem::transmute_copy(&imagenamebuffer),
                    core::mem::transmute_copy(&imagenamebuffersize),
                    core::mem::transmute_copy(&imagenamesize),
                    core::mem::transmute_copy(&modulenamebuffer),
                    core::mem::transmute_copy(&modulenamebuffersize),
                    core::mem::transmute_copy(&modulenamesize),
                    core::mem::transmute_copy(&loadedimagenamebuffer),
                    core::mem::transmute_copy(&loadedimagenamebuffersize),
                    core::mem::transmute_copy(&loadedimagenamesize),
                )
                .into()
            }
        }
        unsafe extern "system" fn GetModuleParameters<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: u32, bases: *const u64, start: u32, params: *mut DEBUG_MODULE_PARAMETERS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleParameters(this, core::mem::transmute_copy(&count), core::mem::transmute_copy(&bases), core::mem::transmute_copy(&start), core::mem::transmute_copy(&params)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModule<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetSymbolModule(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetTypeName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeId<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetTypeId(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeSize<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, size: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetTypeSize(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid)) {
                    Ok(ok__) => {
                        size.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetFieldOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeId<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolTypeId(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetOffsetTypeId<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetOffsetTypeId(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataVirtual<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::ReadTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataVirtual<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::WriteTypedDataVirtual(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataVirtual<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::OutputTypedDataVirtual(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn ReadTypedDataPhysical<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::ReadTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bytesread)).into()
            }
        }
        unsafe extern "system" fn WriteTypedDataPhysical<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::WriteTypedDataPhysical(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&byteswritten)).into()
            }
        }
        unsafe extern "system" fn OutputTypedDataPhysical<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, offset: u64, module: u64, typeid: u32, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::OutputTypedDataPhysical(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn GetScope<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, instructionoffset: u64, scopeframe: *const DEBUG_STACK_FRAME, scopecontext: *const core::ffi::c_void, scopecontextsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScope(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn ResetScope<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::ResetScope(this).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetScopeSymbolGroup(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::CreateSymbolGroup(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatch<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::StartSymbolMatch(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatch<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNextSymbolMatch(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn EndSymbolMatch<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::EndSymbolMatch(this, core::mem::transmute_copy(&handle)).into()
            }
        }
        unsafe extern "system" fn Reload<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::Reload(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolPath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetSymbolPath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendSymbolPath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetImagePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetImagePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendImagePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourcePath(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElement<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourcePathElement(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetSourcePath(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePath<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendSourcePath(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFile<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::FindSourceFile(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsets<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceFileLineOffsets(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformation<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleVersionInformation(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameString<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleNameString(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetConstantName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetFieldName(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetTypeOptions(this) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddTypeOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn RemoveTypeOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::RemoveTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn SetTypeOptions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetTypeOptions(this, core::mem::transmute_copy(&options)).into()
            }
        }
        unsafe extern "system" fn GetNameByOffsetWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32, displacement: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetOffsetByNameWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNearNameByOffsetWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNearNameByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&delta), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByOffsetWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetLineByOffsetWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetOffsetByLineWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, line: u32, file: windows_core::PCWSTR, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetOffsetByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetModuleByModuleNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByModuleNameWide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetSymbolModuleWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetSymbolModuleWide(this, core::mem::transmute(&symbol)) {
                    Ok(ok__) => {
                        base.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetTypeNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetTypeIdWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, name: windows_core::PCWSTR, typeid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetTypeIdWide(this, core::mem::transmute_copy(&module), core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        typeid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldOffsetWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, field: windows_core::PCWSTR, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetFieldOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute(&field)) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolTypeIdWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, symbol: windows_core::PCWSTR, typeid: *mut u32, module: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolTypeIdWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&module)).into()
            }
        }
        unsafe extern "system" fn GetScopeSymbolGroup2<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, update: *mut core::ffi::c_void, symbols: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetScopeSymbolGroup2(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&update)) {
                    Ok(ok__) => {
                        symbols.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSymbolGroup2<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::CreateSymbolGroup2(this) {
                    Ok(ok__) => {
                        group.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartSymbolMatchWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pattern: windows_core::PCWSTR, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::StartSymbolMatchWide(this, core::mem::transmute(&pattern)) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextSymbolMatchWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, buffer: windows_core::PWSTR, buffersize: u32, matchsize: *mut u32, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNextSymbolMatchWide(this, core::mem::transmute_copy(&handle), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&matchsize), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn ReloadWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::ReloadWide(this, core::mem::transmute(&module)).into()
            }
        }
        unsafe extern "system" fn GetSymbolPathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolPathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetSymbolPathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetSymbolPathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSymbolPathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendSymbolPathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetImagePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetImagePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn SetImagePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetImagePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendImagePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendImagePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, pathsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourcePathWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&pathsize)).into()
            }
        }
        unsafe extern "system" fn GetSourcePathElementWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, buffer: windows_core::PWSTR, buffersize: u32, elementsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourcePathElementWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&elementsize)).into()
            }
        }
        unsafe extern "system" fn SetSourcePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetSourcePathWide(this, core::mem::transmute(&path)).into()
            }
        }
        unsafe extern "system" fn AppendSourcePathWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, addition: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AppendSourcePathWide(this, core::mem::transmute(&addition)).into()
            }
        }
        unsafe extern "system" fn FindSourceFileWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::FindSourceFileWide(this, core::mem::transmute_copy(&startelement), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&foundelement), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&foundsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceFileLineOffsetsWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: windows_core::PCWSTR, buffer: *mut u64, bufferlines: u32, filelines: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceFileLineOffsetsWide(this, core::mem::transmute(&file), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&bufferlines), core::mem::transmute_copy(&filelines)).into()
            }
        }
        unsafe extern "system" fn GetModuleVersionInformationWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleVersionInformationWide(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute(&item), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&verinfosize)).into()
            }
        }
        unsafe extern "system" fn GetModuleNameStringWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, which: u32, index: u32, base: u64, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleNameStringWide(this, core::mem::transmute_copy(&which), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetConstantNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, value: u64, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetConstantNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&value), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetFieldNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, typeid: u32, fieldindex: u32, namebuffer: windows_core::PWSTR, namebuffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetFieldNameWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&typeid), core::mem::transmute_copy(&fieldindex), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn IsManagedModule<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::IsManagedModule(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByModuleName2(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByModuleName2Wide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: windows_core::PCWSTR, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByModuleName2Wide(this, core::mem::transmute(&name), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetModuleByOffset2<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, startindex: u32, flags: u32, index: *mut u32, base: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetModuleByOffset2(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&startindex), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index), core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModule<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCSTR, modulename: windows_core::PCSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddSyntheticModule(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticModuleWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64, size: u32, imagepath: windows_core::PCWSTR, modulename: windows_core::PCWSTR, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddSyntheticModuleWide(this, core::mem::transmute_copy(&base), core::mem::transmute_copy(&size), core::mem::transmute(&imagepath), core::mem::transmute(&modulename), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticModule<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, base: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::RemoveSyntheticModule(this, core::mem::transmute_copy(&base)).into()
            }
        }
        unsafe extern "system" fn GetCurrentScopeFrameIndex<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetCurrentScopeFrameIndex(this) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetScopeFrameByIndex<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScopeFrameByIndex(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromJitDebugInfo<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, infooffset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScopeFromJitDebugInfo(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&infooffset)).into()
            }
        }
        unsafe extern "system" fn SetScopeFromStoredEvent<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScopeFromStoredEvent(this).into()
            }
        }
        unsafe extern "system" fn OutputSymbolByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::OutputSymbolByOffset(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFunctionEntryByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, buffer: *mut core::ffi::c_void, buffersize: u32, bufferneeded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetFunctionEntryByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&bufferneeded)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetFieldTypeAndOffset(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetFieldTypeAndOffsetWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, module: u64, containertypeid: u32, field: windows_core::PCWSTR, fieldtypeid: *mut u32, offset: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetFieldTypeAndOffsetWide(this, core::mem::transmute_copy(&module), core::mem::transmute_copy(&containertypeid), core::mem::transmute(&field), core::mem::transmute_copy(&fieldtypeid), core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbol<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddSyntheticSymbol(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn AddSyntheticSymbolWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::AddSyntheticSymbolWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&size), core::mem::transmute(&name), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn RemoveSyntheticSymbol<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::RemoveSyntheticSymbol(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&displacements), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByName<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntriesByName(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntriesByNameWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntriesByNameWide(this, core::mem::transmute(&symbol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&idscount), core::mem::transmute_copy(&entries)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryByToken<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, modulebase: u64, token: u32, id: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetSymbolEntryByToken(this, core::mem::transmute_copy(&modulebase), core::mem::transmute_copy(&token)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSymbolEntryInformation<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *const DEBUG_MODULE_AND_ID, info: *mut DEBUG_SYMBOL_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntryInformation(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&info)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryString<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntryString(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryStringWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntryStringWide(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryOffsetRegions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSymbolEntryOffsetRegions(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSymbolEntryBySymbolEntry<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromid: *const DEBUG_MODULE_AND_ID, flags: u32, toid: *mut DEBUG_MODULE_AND_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetSymbolEntryBySymbolEntry(this, core::mem::transmute_copy(&fromid), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        toid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSourceEntriesByOffset<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, flags: u32, entries: *mut DEBUG_SYMBOL_SOURCE_ENTRY, entriescount: u32, entriesavail: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntriesByOffset(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLine<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntriesByLine(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntriesByLineWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntriesByLineWide(this, core::mem::transmute_copy(&line), core::mem::transmute(&file), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&entries), core::mem::transmute_copy(&entriescount), core::mem::transmute_copy(&entriesavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryString<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntryString(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryStringWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntryStringWide(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&which), core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&stringsize)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryOffsetRegions<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntryOffsetRegions(this, core::mem::transmute_copy(&entry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&regions), core::mem::transmute_copy(&regionscount), core::mem::transmute_copy(&regionsavail)).into()
            }
        }
        unsafe extern "system" fn GetSourceEntryBySourceEntry<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fromentry: *const DEBUG_SYMBOL_SOURCE_ENTRY, flags: u32, toentry: *mut DEBUG_SYMBOL_SOURCE_ENTRY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetSourceEntryBySourceEntry(this, core::mem::transmute_copy(&fromentry), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&toentry)).into()
            }
        }
        unsafe extern "system" fn GetScopeEx<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetScopeEx(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn SetScopeEx<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScopeEx(this, core::mem::transmute_copy(&instructionoffset), core::mem::transmute_copy(&scopeframe), core::mem::transmute_copy(&scopecontext), core::mem::transmute_copy(&scopecontextsize)).into()
            }
        }
        unsafe extern "system" fn GetNameByInlineContext<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNameByInlineContext(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetNameByInlineContextWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetNameByInlineContextWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&namebuffer), core::mem::transmute_copy(&namebuffersize), core::mem::transmute_copy(&namesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByInlineContext<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetLineByInlineContext(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn GetLineByInlineContextWide<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::GetLineByInlineContextWide(this, core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext), core::mem::transmute_copy(&line), core::mem::transmute_copy(&filebuffer), core::mem::transmute_copy(&filebuffersize), core::mem::transmute_copy(&filesize), core::mem::transmute_copy(&displacement)).into()
            }
        }
        unsafe extern "system" fn OutputSymbolByInlineContext<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, outputcontrol: u32, flags: u32, offset: u64, inlinecontext: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::OutputSymbolByInlineContext(this, core::mem::transmute_copy(&outputcontrol), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&offset), core::mem::transmute_copy(&inlinecontext)).into()
            }
        }
        unsafe extern "system" fn GetCurrentScopeFrameIndexEx<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, index: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSymbols5_Impl::GetCurrentScopeFrameIndexEx(this, core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        index.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetScopeFrameByIndexEx<Identity: IDebugSymbols5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, index: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSymbols5_Impl::SetScopeFrameByIndexEx(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&index)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSymbolOptions: GetSymbolOptions::<Identity, OFFSET>,
            AddSymbolOptions: AddSymbolOptions::<Identity, OFFSET>,
            RemoveSymbolOptions: RemoveSymbolOptions::<Identity, OFFSET>,
            SetSymbolOptions: SetSymbolOptions::<Identity, OFFSET>,
            GetNameByOffset: GetNameByOffset::<Identity, OFFSET>,
            GetOffsetByName: GetOffsetByName::<Identity, OFFSET>,
            GetNearNameByOffset: GetNearNameByOffset::<Identity, OFFSET>,
            GetLineByOffset: GetLineByOffset::<Identity, OFFSET>,
            GetOffsetByLine: GetOffsetByLine::<Identity, OFFSET>,
            GetNumberModules: GetNumberModules::<Identity, OFFSET>,
            GetModuleByIndex: GetModuleByIndex::<Identity, OFFSET>,
            GetModuleByModuleName: GetModuleByModuleName::<Identity, OFFSET>,
            GetModuleByOffset: GetModuleByOffset::<Identity, OFFSET>,
            GetModuleNames: GetModuleNames::<Identity, OFFSET>,
            GetModuleParameters: GetModuleParameters::<Identity, OFFSET>,
            GetSymbolModule: GetSymbolModule::<Identity, OFFSET>,
            GetTypeName: GetTypeName::<Identity, OFFSET>,
            GetTypeId: GetTypeId::<Identity, OFFSET>,
            GetTypeSize: GetTypeSize::<Identity, OFFSET>,
            GetFieldOffset: GetFieldOffset::<Identity, OFFSET>,
            GetSymbolTypeId: GetSymbolTypeId::<Identity, OFFSET>,
            GetOffsetTypeId: GetOffsetTypeId::<Identity, OFFSET>,
            ReadTypedDataVirtual: ReadTypedDataVirtual::<Identity, OFFSET>,
            WriteTypedDataVirtual: WriteTypedDataVirtual::<Identity, OFFSET>,
            OutputTypedDataVirtual: OutputTypedDataVirtual::<Identity, OFFSET>,
            ReadTypedDataPhysical: ReadTypedDataPhysical::<Identity, OFFSET>,
            WriteTypedDataPhysical: WriteTypedDataPhysical::<Identity, OFFSET>,
            OutputTypedDataPhysical: OutputTypedDataPhysical::<Identity, OFFSET>,
            GetScope: GetScope::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            ResetScope: ResetScope::<Identity, OFFSET>,
            GetScopeSymbolGroup: GetScopeSymbolGroup::<Identity, OFFSET>,
            CreateSymbolGroup: CreateSymbolGroup::<Identity, OFFSET>,
            StartSymbolMatch: StartSymbolMatch::<Identity, OFFSET>,
            GetNextSymbolMatch: GetNextSymbolMatch::<Identity, OFFSET>,
            EndSymbolMatch: EndSymbolMatch::<Identity, OFFSET>,
            Reload: Reload::<Identity, OFFSET>,
            GetSymbolPath: GetSymbolPath::<Identity, OFFSET>,
            SetSymbolPath: SetSymbolPath::<Identity, OFFSET>,
            AppendSymbolPath: AppendSymbolPath::<Identity, OFFSET>,
            GetImagePath: GetImagePath::<Identity, OFFSET>,
            SetImagePath: SetImagePath::<Identity, OFFSET>,
            AppendImagePath: AppendImagePath::<Identity, OFFSET>,
            GetSourcePath: GetSourcePath::<Identity, OFFSET>,
            GetSourcePathElement: GetSourcePathElement::<Identity, OFFSET>,
            SetSourcePath: SetSourcePath::<Identity, OFFSET>,
            AppendSourcePath: AppendSourcePath::<Identity, OFFSET>,
            FindSourceFile: FindSourceFile::<Identity, OFFSET>,
            GetSourceFileLineOffsets: GetSourceFileLineOffsets::<Identity, OFFSET>,
            GetModuleVersionInformation: GetModuleVersionInformation::<Identity, OFFSET>,
            GetModuleNameString: GetModuleNameString::<Identity, OFFSET>,
            GetConstantName: GetConstantName::<Identity, OFFSET>,
            GetFieldName: GetFieldName::<Identity, OFFSET>,
            GetTypeOptions: GetTypeOptions::<Identity, OFFSET>,
            AddTypeOptions: AddTypeOptions::<Identity, OFFSET>,
            RemoveTypeOptions: RemoveTypeOptions::<Identity, OFFSET>,
            SetTypeOptions: SetTypeOptions::<Identity, OFFSET>,
            GetNameByOffsetWide: GetNameByOffsetWide::<Identity, OFFSET>,
            GetOffsetByNameWide: GetOffsetByNameWide::<Identity, OFFSET>,
            GetNearNameByOffsetWide: GetNearNameByOffsetWide::<Identity, OFFSET>,
            GetLineByOffsetWide: GetLineByOffsetWide::<Identity, OFFSET>,
            GetOffsetByLineWide: GetOffsetByLineWide::<Identity, OFFSET>,
            GetModuleByModuleNameWide: GetModuleByModuleNameWide::<Identity, OFFSET>,
            GetSymbolModuleWide: GetSymbolModuleWide::<Identity, OFFSET>,
            GetTypeNameWide: GetTypeNameWide::<Identity, OFFSET>,
            GetTypeIdWide: GetTypeIdWide::<Identity, OFFSET>,
            GetFieldOffsetWide: GetFieldOffsetWide::<Identity, OFFSET>,
            GetSymbolTypeIdWide: GetSymbolTypeIdWide::<Identity, OFFSET>,
            GetScopeSymbolGroup2: GetScopeSymbolGroup2::<Identity, OFFSET>,
            CreateSymbolGroup2: CreateSymbolGroup2::<Identity, OFFSET>,
            StartSymbolMatchWide: StartSymbolMatchWide::<Identity, OFFSET>,
            GetNextSymbolMatchWide: GetNextSymbolMatchWide::<Identity, OFFSET>,
            ReloadWide: ReloadWide::<Identity, OFFSET>,
            GetSymbolPathWide: GetSymbolPathWide::<Identity, OFFSET>,
            SetSymbolPathWide: SetSymbolPathWide::<Identity, OFFSET>,
            AppendSymbolPathWide: AppendSymbolPathWide::<Identity, OFFSET>,
            GetImagePathWide: GetImagePathWide::<Identity, OFFSET>,
            SetImagePathWide: SetImagePathWide::<Identity, OFFSET>,
            AppendImagePathWide: AppendImagePathWide::<Identity, OFFSET>,
            GetSourcePathWide: GetSourcePathWide::<Identity, OFFSET>,
            GetSourcePathElementWide: GetSourcePathElementWide::<Identity, OFFSET>,
            SetSourcePathWide: SetSourcePathWide::<Identity, OFFSET>,
            AppendSourcePathWide: AppendSourcePathWide::<Identity, OFFSET>,
            FindSourceFileWide: FindSourceFileWide::<Identity, OFFSET>,
            GetSourceFileLineOffsetsWide: GetSourceFileLineOffsetsWide::<Identity, OFFSET>,
            GetModuleVersionInformationWide: GetModuleVersionInformationWide::<Identity, OFFSET>,
            GetModuleNameStringWide: GetModuleNameStringWide::<Identity, OFFSET>,
            GetConstantNameWide: GetConstantNameWide::<Identity, OFFSET>,
            GetFieldNameWide: GetFieldNameWide::<Identity, OFFSET>,
            IsManagedModule: IsManagedModule::<Identity, OFFSET>,
            GetModuleByModuleName2: GetModuleByModuleName2::<Identity, OFFSET>,
            GetModuleByModuleName2Wide: GetModuleByModuleName2Wide::<Identity, OFFSET>,
            GetModuleByOffset2: GetModuleByOffset2::<Identity, OFFSET>,
            AddSyntheticModule: AddSyntheticModule::<Identity, OFFSET>,
            AddSyntheticModuleWide: AddSyntheticModuleWide::<Identity, OFFSET>,
            RemoveSyntheticModule: RemoveSyntheticModule::<Identity, OFFSET>,
            GetCurrentScopeFrameIndex: GetCurrentScopeFrameIndex::<Identity, OFFSET>,
            SetScopeFrameByIndex: SetScopeFrameByIndex::<Identity, OFFSET>,
            SetScopeFromJitDebugInfo: SetScopeFromJitDebugInfo::<Identity, OFFSET>,
            SetScopeFromStoredEvent: SetScopeFromStoredEvent::<Identity, OFFSET>,
            OutputSymbolByOffset: OutputSymbolByOffset::<Identity, OFFSET>,
            GetFunctionEntryByOffset: GetFunctionEntryByOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffset: GetFieldTypeAndOffset::<Identity, OFFSET>,
            GetFieldTypeAndOffsetWide: GetFieldTypeAndOffsetWide::<Identity, OFFSET>,
            AddSyntheticSymbol: AddSyntheticSymbol::<Identity, OFFSET>,
            AddSyntheticSymbolWide: AddSyntheticSymbolWide::<Identity, OFFSET>,
            RemoveSyntheticSymbol: RemoveSyntheticSymbol::<Identity, OFFSET>,
            GetSymbolEntriesByOffset: GetSymbolEntriesByOffset::<Identity, OFFSET>,
            GetSymbolEntriesByName: GetSymbolEntriesByName::<Identity, OFFSET>,
            GetSymbolEntriesByNameWide: GetSymbolEntriesByNameWide::<Identity, OFFSET>,
            GetSymbolEntryByToken: GetSymbolEntryByToken::<Identity, OFFSET>,
            GetSymbolEntryInformation: GetSymbolEntryInformation::<Identity, OFFSET>,
            GetSymbolEntryString: GetSymbolEntryString::<Identity, OFFSET>,
            GetSymbolEntryStringWide: GetSymbolEntryStringWide::<Identity, OFFSET>,
            GetSymbolEntryOffsetRegions: GetSymbolEntryOffsetRegions::<Identity, OFFSET>,
            GetSymbolEntryBySymbolEntry: GetSymbolEntryBySymbolEntry::<Identity, OFFSET>,
            GetSourceEntriesByOffset: GetSourceEntriesByOffset::<Identity, OFFSET>,
            GetSourceEntriesByLine: GetSourceEntriesByLine::<Identity, OFFSET>,
            GetSourceEntriesByLineWide: GetSourceEntriesByLineWide::<Identity, OFFSET>,
            GetSourceEntryString: GetSourceEntryString::<Identity, OFFSET>,
            GetSourceEntryStringWide: GetSourceEntryStringWide::<Identity, OFFSET>,
            GetSourceEntryOffsetRegions: GetSourceEntryOffsetRegions::<Identity, OFFSET>,
            GetSourceEntryBySourceEntry: GetSourceEntryBySourceEntry::<Identity, OFFSET>,
            GetScopeEx: GetScopeEx::<Identity, OFFSET>,
            SetScopeEx: SetScopeEx::<Identity, OFFSET>,
            GetNameByInlineContext: GetNameByInlineContext::<Identity, OFFSET>,
            GetNameByInlineContextWide: GetNameByInlineContextWide::<Identity, OFFSET>,
            GetLineByInlineContext: GetLineByInlineContext::<Identity, OFFSET>,
            GetLineByInlineContextWide: GetLineByInlineContextWide::<Identity, OFFSET>,
            OutputSymbolByInlineContext: OutputSymbolByInlineContext::<Identity, OFFSET>,
            GetCurrentScopeFrameIndexEx: GetCurrentScopeFrameIndexEx::<Identity, OFFSET>,
            SetScopeFrameByIndexEx: SetScopeFrameByIndexEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSymbols5 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSymbols5 {}
windows_core::imp::define_interface!(IDebugSystemObjects, IDebugSystemObjects_Vtbl, 0x6b86fe2c_2c4f_4f0c_9da2_174311acc327);
windows_core::imp::interface_hierarchy!(IDebugSystemObjects, windows_core::IUnknown);
impl IDebugSystemObjects {
    pub unsafe fn GetEventThread(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventThread)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventProcess(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventProcess)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentThreadId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetCurrentProcessId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentProcessId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberThreads(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberThreads)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreads)(windows_core::Interface::as_raw(self), total as _, largestprocess as _).ok() }
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByProcessor)(windows_core::Interface::as_raw(self), processor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadTeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByTeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberProcesses(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcesses)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProcessIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessPeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByPeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: Option<&mut [u8]>, exesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), exesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugSystemObjects_Impl: windows_core::IUnknownImpl {
    fn GetEventThread(&self) -> windows_core::Result<u32>;
    fn GetEventProcess(&self) -> windows_core::Result<u32>;
    fn GetCurrentThreadId(&self) -> windows_core::Result<u32>;
    fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()>;
    fn GetCurrentProcessId(&self) -> windows_core::Result<u32>;
    fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberThreads(&self) -> windows_core::Result<u32>;
    fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32>;
    fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetNumberProcesses(&self) -> windows_core::Result<u32>;
    fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32>;
    fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessExecutableName(&self, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::Result<()>;
}
impl IDebugSystemObjects_Vtbl {
    pub const fn new<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventThread<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetEventThread(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventProcess<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetEventProcess(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentThreadId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::SetCurrentThreadId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentProcessId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentProcessId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::SetCurrentProcessId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberThreads<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetNumberThreads(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTotalNumberThreads<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::GetTotalNumberThreads(this, core::mem::transmute_copy(&total), core::mem::transmute_copy(&largestprocess)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdsByIndex<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::GetThreadIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdByProcessor<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetThreadIdByProcessor(this, core::mem::transmute_copy(&processor)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadDataOffset<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByDataOffset<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetThreadIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadTeb<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentThreadTeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByTeb<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetThreadIdByTeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadSystemId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentThreadSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdBySystemId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetThreadIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadHandle<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentThreadHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByHandle<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetThreadIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberProcesses<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetNumberProcesses(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdsByIndex<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::GetProcessIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessDataOffset<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByDataOffset<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetProcessIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessPeb<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentProcessPeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByPeb<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetProcessIdByPeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessSystemId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentProcessSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdBySystemId<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetProcessIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessHandle<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetCurrentProcessHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByHandle<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects_Impl::GetProcessIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessExecutableName<Identity: IDebugSystemObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects_Impl::GetCurrentProcessExecutableName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&exesize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventThread: GetEventThread::<Identity, OFFSET>,
            GetEventProcess: GetEventProcess::<Identity, OFFSET>,
            GetCurrentThreadId: GetCurrentThreadId::<Identity, OFFSET>,
            SetCurrentThreadId: SetCurrentThreadId::<Identity, OFFSET>,
            GetCurrentProcessId: GetCurrentProcessId::<Identity, OFFSET>,
            SetCurrentProcessId: SetCurrentProcessId::<Identity, OFFSET>,
            GetNumberThreads: GetNumberThreads::<Identity, OFFSET>,
            GetTotalNumberThreads: GetTotalNumberThreads::<Identity, OFFSET>,
            GetThreadIdsByIndex: GetThreadIdsByIndex::<Identity, OFFSET>,
            GetThreadIdByProcessor: GetThreadIdByProcessor::<Identity, OFFSET>,
            GetCurrentThreadDataOffset: GetCurrentThreadDataOffset::<Identity, OFFSET>,
            GetThreadIdByDataOffset: GetThreadIdByDataOffset::<Identity, OFFSET>,
            GetCurrentThreadTeb: GetCurrentThreadTeb::<Identity, OFFSET>,
            GetThreadIdByTeb: GetThreadIdByTeb::<Identity, OFFSET>,
            GetCurrentThreadSystemId: GetCurrentThreadSystemId::<Identity, OFFSET>,
            GetThreadIdBySystemId: GetThreadIdBySystemId::<Identity, OFFSET>,
            GetCurrentThreadHandle: GetCurrentThreadHandle::<Identity, OFFSET>,
            GetThreadIdByHandle: GetThreadIdByHandle::<Identity, OFFSET>,
            GetNumberProcesses: GetNumberProcesses::<Identity, OFFSET>,
            GetProcessIdsByIndex: GetProcessIdsByIndex::<Identity, OFFSET>,
            GetCurrentProcessDataOffset: GetCurrentProcessDataOffset::<Identity, OFFSET>,
            GetProcessIdByDataOffset: GetProcessIdByDataOffset::<Identity, OFFSET>,
            GetCurrentProcessPeb: GetCurrentProcessPeb::<Identity, OFFSET>,
            GetProcessIdByPeb: GetProcessIdByPeb::<Identity, OFFSET>,
            GetCurrentProcessSystemId: GetCurrentProcessSystemId::<Identity, OFFSET>,
            GetProcessIdBySystemId: GetProcessIdBySystemId::<Identity, OFFSET>,
            GetCurrentProcessHandle: GetCurrentProcessHandle::<Identity, OFFSET>,
            GetProcessIdByHandle: GetProcessIdByHandle::<Identity, OFFSET>,
            GetCurrentProcessExecutableName: GetCurrentProcessExecutableName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSystemObjects as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSystemObjects {}
windows_core::imp::define_interface!(IDebugSystemObjects2, IDebugSystemObjects2_Vtbl, 0x0ae9f5ff_1852_4679_b055_494bee6407ee);
windows_core::imp::interface_hierarchy!(IDebugSystemObjects2, windows_core::IUnknown);
impl IDebugSystemObjects2 {
    pub unsafe fn GetEventThread(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventThread)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventProcess(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventProcess)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentThreadId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetCurrentProcessId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentProcessId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberThreads(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberThreads)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreads)(windows_core::Interface::as_raw(self), total as _, largestprocess as _).ok() }
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByProcessor)(windows_core::Interface::as_raw(self), processor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadTeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByTeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberProcesses(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcesses)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProcessIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessPeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByPeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: Option<&mut [u8]>, exesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), exesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
}
pub trait IDebugSystemObjects2_Impl: windows_core::IUnknownImpl {
    fn GetEventThread(&self) -> windows_core::Result<u32>;
    fn GetEventProcess(&self) -> windows_core::Result<u32>;
    fn GetCurrentThreadId(&self) -> windows_core::Result<u32>;
    fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()>;
    fn GetCurrentProcessId(&self) -> windows_core::Result<u32>;
    fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberThreads(&self) -> windows_core::Result<u32>;
    fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32>;
    fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetNumberProcesses(&self) -> windows_core::Result<u32>;
    fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32>;
    fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessExecutableName(&self, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32>;
    fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()>;
}
impl IDebugSystemObjects2_Vtbl {
    pub const fn new<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventThread<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetEventThread(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventProcess<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetEventProcess(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentThreadId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::SetCurrentThreadId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentProcessId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::SetCurrentProcessId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberThreads<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetNumberThreads(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTotalNumberThreads<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::GetTotalNumberThreads(this, core::mem::transmute_copy(&total), core::mem::transmute_copy(&largestprocess)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdsByIndex<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::GetThreadIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdByProcessor<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetThreadIdByProcessor(this, core::mem::transmute_copy(&processor)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetThreadIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadTeb<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentThreadTeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByTeb<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetThreadIdByTeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadSystemId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentThreadSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdBySystemId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetThreadIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadHandle<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentThreadHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByHandle<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetThreadIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberProcesses<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetNumberProcesses(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdsByIndex<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::GetProcessIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetProcessIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessPeb<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessPeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByPeb<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetProcessIdByPeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessSystemId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdBySystemId<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetProcessIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessHandle<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByHandle<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetProcessIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessExecutableName<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::GetCurrentProcessExecutableName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&exesize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessUpTime<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetCurrentProcessUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetImplicitThreadDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetImplicitThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitThreadDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::SetImplicitThreadDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetImplicitProcessDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects2_Impl::GetImplicitProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitProcessDataOffset<Identity: IDebugSystemObjects2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects2_Impl::SetImplicitProcessDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventThread: GetEventThread::<Identity, OFFSET>,
            GetEventProcess: GetEventProcess::<Identity, OFFSET>,
            GetCurrentThreadId: GetCurrentThreadId::<Identity, OFFSET>,
            SetCurrentThreadId: SetCurrentThreadId::<Identity, OFFSET>,
            GetCurrentProcessId: GetCurrentProcessId::<Identity, OFFSET>,
            SetCurrentProcessId: SetCurrentProcessId::<Identity, OFFSET>,
            GetNumberThreads: GetNumberThreads::<Identity, OFFSET>,
            GetTotalNumberThreads: GetTotalNumberThreads::<Identity, OFFSET>,
            GetThreadIdsByIndex: GetThreadIdsByIndex::<Identity, OFFSET>,
            GetThreadIdByProcessor: GetThreadIdByProcessor::<Identity, OFFSET>,
            GetCurrentThreadDataOffset: GetCurrentThreadDataOffset::<Identity, OFFSET>,
            GetThreadIdByDataOffset: GetThreadIdByDataOffset::<Identity, OFFSET>,
            GetCurrentThreadTeb: GetCurrentThreadTeb::<Identity, OFFSET>,
            GetThreadIdByTeb: GetThreadIdByTeb::<Identity, OFFSET>,
            GetCurrentThreadSystemId: GetCurrentThreadSystemId::<Identity, OFFSET>,
            GetThreadIdBySystemId: GetThreadIdBySystemId::<Identity, OFFSET>,
            GetCurrentThreadHandle: GetCurrentThreadHandle::<Identity, OFFSET>,
            GetThreadIdByHandle: GetThreadIdByHandle::<Identity, OFFSET>,
            GetNumberProcesses: GetNumberProcesses::<Identity, OFFSET>,
            GetProcessIdsByIndex: GetProcessIdsByIndex::<Identity, OFFSET>,
            GetCurrentProcessDataOffset: GetCurrentProcessDataOffset::<Identity, OFFSET>,
            GetProcessIdByDataOffset: GetProcessIdByDataOffset::<Identity, OFFSET>,
            GetCurrentProcessPeb: GetCurrentProcessPeb::<Identity, OFFSET>,
            GetProcessIdByPeb: GetProcessIdByPeb::<Identity, OFFSET>,
            GetCurrentProcessSystemId: GetCurrentProcessSystemId::<Identity, OFFSET>,
            GetProcessIdBySystemId: GetProcessIdBySystemId::<Identity, OFFSET>,
            GetCurrentProcessHandle: GetCurrentProcessHandle::<Identity, OFFSET>,
            GetProcessIdByHandle: GetProcessIdByHandle::<Identity, OFFSET>,
            GetCurrentProcessExecutableName: GetCurrentProcessExecutableName::<Identity, OFFSET>,
            GetCurrentProcessUpTime: GetCurrentProcessUpTime::<Identity, OFFSET>,
            GetImplicitThreadDataOffset: GetImplicitThreadDataOffset::<Identity, OFFSET>,
            SetImplicitThreadDataOffset: SetImplicitThreadDataOffset::<Identity, OFFSET>,
            GetImplicitProcessDataOffset: GetImplicitProcessDataOffset::<Identity, OFFSET>,
            SetImplicitProcessDataOffset: SetImplicitProcessDataOffset::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSystemObjects2 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSystemObjects2 {}
windows_core::imp::define_interface!(IDebugSystemObjects3, IDebugSystemObjects3_Vtbl, 0xe9676e2f_e286_4ea3_b0f9_dfe5d9fc330e);
windows_core::imp::interface_hierarchy!(IDebugSystemObjects3, windows_core::IUnknown);
impl IDebugSystemObjects3 {
    pub unsafe fn GetEventThread(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventThread)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventProcess(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventProcess)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentThreadId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetCurrentProcessId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentProcessId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberThreads(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberThreads)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreads)(windows_core::Interface::as_raw(self), total as _, largestprocess as _).ok() }
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByProcessor)(windows_core::Interface::as_raw(self), processor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadTeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByTeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberProcesses(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcesses)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProcessIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessPeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByPeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: Option<&mut [u8]>, exesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), exesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
    pub unsafe fn GetEventSystem(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventSystem)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentSystemId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentSystemId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberSystems(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSystems)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemIdsByIndex(&self, start: u32, ids: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemIdsByIndex)(windows_core::Interface::as_raw(self), start, ids.len().try_into().unwrap(), 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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreadsAndProcesses)(windows_core::Interface::as_raw(self), totalthreads as _, totalprocesses as _, largestprocessthreads as _, largestsystemthreads as _, largestsystemprocesses as _).ok() }
    }
    pub unsafe fn GetCurrentSystemServer(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemServer)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemByServer(&self, server: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSystemByServer)(windows_core::Interface::as_raw(self), server, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemServerName(&self, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects3_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetEventSystem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberSystems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreadsAndProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemServer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetSystemByServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemServerName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugSystemObjects3_Impl: windows_core::IUnknownImpl {
    fn GetEventThread(&self) -> windows_core::Result<u32>;
    fn GetEventProcess(&self) -> windows_core::Result<u32>;
    fn GetCurrentThreadId(&self) -> windows_core::Result<u32>;
    fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()>;
    fn GetCurrentProcessId(&self) -> windows_core::Result<u32>;
    fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberThreads(&self) -> windows_core::Result<u32>;
    fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32>;
    fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetNumberProcesses(&self) -> windows_core::Result<u32>;
    fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32>;
    fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessExecutableName(&self, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32>;
    fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetEventSystem(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemId(&self) -> windows_core::Result<u32>;
    fn SetCurrentSystemId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberSystems(&self) -> windows_core::Result<u32>;
    fn GetSystemIdsByIndex(&self, start: u32, count: u32, ids: *mut u32) -> windows_core::Result<()>;
    fn GetTotalNumberThreadsAndProcesses(&self, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentSystemServer(&self) -> windows_core::Result<u64>;
    fn GetSystemByServer(&self, server: u64) -> windows_core::Result<u32>;
    fn GetCurrentSystemServerName(&self, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
}
impl IDebugSystemObjects3_Vtbl {
    pub const fn new<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventThread<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetEventThread(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventProcess<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetEventProcess(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentThreadId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::SetCurrentThreadId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentProcessId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::SetCurrentProcessId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberThreads<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetNumberThreads(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTotalNumberThreads<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetTotalNumberThreads(this, core::mem::transmute_copy(&total), core::mem::transmute_copy(&largestprocess)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdsByIndex<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetThreadIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdByProcessor<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetThreadIdByProcessor(this, core::mem::transmute_copy(&processor)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetThreadIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadTeb<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentThreadTeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByTeb<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetThreadIdByTeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadSystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentThreadSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdBySystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetThreadIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadHandle<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentThreadHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByHandle<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetThreadIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberProcesses<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetNumberProcesses(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdsByIndex<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetProcessIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetProcessIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessPeb<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessPeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByPeb<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetProcessIdByPeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessSystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdBySystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetProcessIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessHandle<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByHandle<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetProcessIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessExecutableName<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetCurrentProcessExecutableName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&exesize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessUpTime<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentProcessUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetImplicitThreadDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetImplicitThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitThreadDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::SetImplicitThreadDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetImplicitProcessDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetImplicitProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitProcessDataOffset<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::SetImplicitProcessDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetEventSystem<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetEventSystem(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentSystemId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentSystemId<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::SetCurrentSystemId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberSystems<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetNumberSystems(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemIdsByIndex<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetSystemIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids)).into()
            }
        }
        unsafe extern "system" fn GetTotalNumberThreadsAndProcesses<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetTotalNumberThreadsAndProcesses(this, core::mem::transmute_copy(&totalthreads), core::mem::transmute_copy(&totalprocesses), core::mem::transmute_copy(&largestprocessthreads), core::mem::transmute_copy(&largestsystemthreads), core::mem::transmute_copy(&largestsystemprocesses)).into()
            }
        }
        unsafe extern "system" fn GetCurrentSystemServer<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetCurrentSystemServer(this) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemByServer<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects3_Impl::GetSystemByServer(this, core::mem::transmute_copy(&server)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemServerName<Identity: IDebugSystemObjects3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects3_Impl::GetCurrentSystemServerName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventThread: GetEventThread::<Identity, OFFSET>,
            GetEventProcess: GetEventProcess::<Identity, OFFSET>,
            GetCurrentThreadId: GetCurrentThreadId::<Identity, OFFSET>,
            SetCurrentThreadId: SetCurrentThreadId::<Identity, OFFSET>,
            GetCurrentProcessId: GetCurrentProcessId::<Identity, OFFSET>,
            SetCurrentProcessId: SetCurrentProcessId::<Identity, OFFSET>,
            GetNumberThreads: GetNumberThreads::<Identity, OFFSET>,
            GetTotalNumberThreads: GetTotalNumberThreads::<Identity, OFFSET>,
            GetThreadIdsByIndex: GetThreadIdsByIndex::<Identity, OFFSET>,
            GetThreadIdByProcessor: GetThreadIdByProcessor::<Identity, OFFSET>,
            GetCurrentThreadDataOffset: GetCurrentThreadDataOffset::<Identity, OFFSET>,
            GetThreadIdByDataOffset: GetThreadIdByDataOffset::<Identity, OFFSET>,
            GetCurrentThreadTeb: GetCurrentThreadTeb::<Identity, OFFSET>,
            GetThreadIdByTeb: GetThreadIdByTeb::<Identity, OFFSET>,
            GetCurrentThreadSystemId: GetCurrentThreadSystemId::<Identity, OFFSET>,
            GetThreadIdBySystemId: GetThreadIdBySystemId::<Identity, OFFSET>,
            GetCurrentThreadHandle: GetCurrentThreadHandle::<Identity, OFFSET>,
            GetThreadIdByHandle: GetThreadIdByHandle::<Identity, OFFSET>,
            GetNumberProcesses: GetNumberProcesses::<Identity, OFFSET>,
            GetProcessIdsByIndex: GetProcessIdsByIndex::<Identity, OFFSET>,
            GetCurrentProcessDataOffset: GetCurrentProcessDataOffset::<Identity, OFFSET>,
            GetProcessIdByDataOffset: GetProcessIdByDataOffset::<Identity, OFFSET>,
            GetCurrentProcessPeb: GetCurrentProcessPeb::<Identity, OFFSET>,
            GetProcessIdByPeb: GetProcessIdByPeb::<Identity, OFFSET>,
            GetCurrentProcessSystemId: GetCurrentProcessSystemId::<Identity, OFFSET>,
            GetProcessIdBySystemId: GetProcessIdBySystemId::<Identity, OFFSET>,
            GetCurrentProcessHandle: GetCurrentProcessHandle::<Identity, OFFSET>,
            GetProcessIdByHandle: GetProcessIdByHandle::<Identity, OFFSET>,
            GetCurrentProcessExecutableName: GetCurrentProcessExecutableName::<Identity, OFFSET>,
            GetCurrentProcessUpTime: GetCurrentProcessUpTime::<Identity, OFFSET>,
            GetImplicitThreadDataOffset: GetImplicitThreadDataOffset::<Identity, OFFSET>,
            SetImplicitThreadDataOffset: SetImplicitThreadDataOffset::<Identity, OFFSET>,
            GetImplicitProcessDataOffset: GetImplicitProcessDataOffset::<Identity, OFFSET>,
            SetImplicitProcessDataOffset: SetImplicitProcessDataOffset::<Identity, OFFSET>,
            GetEventSystem: GetEventSystem::<Identity, OFFSET>,
            GetCurrentSystemId: GetCurrentSystemId::<Identity, OFFSET>,
            SetCurrentSystemId: SetCurrentSystemId::<Identity, OFFSET>,
            GetNumberSystems: GetNumberSystems::<Identity, OFFSET>,
            GetSystemIdsByIndex: GetSystemIdsByIndex::<Identity, OFFSET>,
            GetTotalNumberThreadsAndProcesses: GetTotalNumberThreadsAndProcesses::<Identity, OFFSET>,
            GetCurrentSystemServer: GetCurrentSystemServer::<Identity, OFFSET>,
            GetSystemByServer: GetSystemByServer::<Identity, OFFSET>,
            GetCurrentSystemServerName: GetCurrentSystemServerName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSystemObjects3 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSystemObjects3 {}
windows_core::imp::define_interface!(IDebugSystemObjects4, IDebugSystemObjects4_Vtbl, 0x489468e6_7d0f_4af5_87ab_25207454d553);
windows_core::imp::interface_hierarchy!(IDebugSystemObjects4, windows_core::IUnknown);
impl IDebugSystemObjects4 {
    pub unsafe fn GetEventThread(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventThread)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEventProcess(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventProcess)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentThreadId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetCurrentProcessId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentProcessId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberThreads(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberThreads)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreads)(windows_core::Interface::as_raw(self), total as _, largestprocess as _).ok() }
    }
    pub unsafe fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThreadIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByProcessor)(windows_core::Interface::as_raw(self), processor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadTeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByTeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentThreadHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetThreadIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberProcesses(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberProcesses)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: Option<*mut u32>, sysids: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProcessIdsByIndex)(windows_core::Interface::as_raw(self), start, count, ids.unwrap_or(core::mem::zeroed()) as _, sysids.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByDataOffset)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessPeb)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByPeb)(windows_core::Interface::as_raw(self), offset, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdBySystemId)(windows_core::Interface::as_raw(self), sysid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessHandle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProcessIdByHandle)(windows_core::Interface::as_raw(self), handle, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentProcessExecutableName(&self, buffer: Option<&mut [u8]>, exesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), exesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentProcessUpTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitThreadDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
    pub unsafe fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetImplicitProcessDataOffset)(windows_core::Interface::as_raw(self), offset).ok() }
    }
    pub unsafe fn GetEventSystem(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventSystem)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemId(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentSystemId(&self, id: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentSystemId)(windows_core::Interface::as_raw(self), id).ok() }
    }
    pub unsafe fn GetNumberSystems(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberSystems)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemIdsByIndex(&self, start: u32, ids: &mut [u32]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSystemIdsByIndex)(windows_core::Interface::as_raw(self), start, ids.len().try_into().unwrap(), 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<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTotalNumberThreadsAndProcesses)(windows_core::Interface::as_raw(self), totalthreads as _, totalprocesses as _, largestprocessthreads as _, largestsystemthreads as _, largestsystemprocesses as _).ok() }
    }
    pub unsafe fn GetCurrentSystemServer(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSystemServer)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSystemByServer(&self, server: u64) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSystemByServer)(windows_core::Interface::as_raw(self), server, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCurrentSystemServerName(&self, buffer: Option<&mut [u8]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentProcessExecutableNameWide(&self, buffer: Option<&mut [u16]>, exesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), exesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetCurrentSystemServerNameWide(&self, buffer: Option<&mut [u16]>, namesize: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), namesize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDebugSystemObjects4_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventThread: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEventProcess: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentThreadId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentProcessId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreads: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdByProcessor: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadTeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByTeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetThreadIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentThreadHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetThreadIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetNumberProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessPeb: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByPeb: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetProcessIdBySystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessHandle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetProcessIdByHandle: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessExecutableName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessUpTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitThreadDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub SetImplicitProcessDataOffset: unsafe extern "system" fn(*mut core::ffi::c_void, u64) -> windows_core::HRESULT,
    pub GetEventSystem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentSystemId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetNumberSystems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSystemIdsByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut u32) -> windows_core::HRESULT,
    pub GetTotalNumberThreadsAndProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemServer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetSystemByServer: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemServerName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentProcessExecutableNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub GetCurrentSystemServerNameWide: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IDebugSystemObjects4_Impl: windows_core::IUnknownImpl {
    fn GetEventThread(&self) -> windows_core::Result<u32>;
    fn GetEventProcess(&self) -> windows_core::Result<u32>;
    fn GetCurrentThreadId(&self) -> windows_core::Result<u32>;
    fn SetCurrentThreadId(&self, id: u32) -> windows_core::Result<()>;
    fn GetCurrentProcessId(&self) -> windows_core::Result<u32>;
    fn SetCurrentProcessId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberThreads(&self) -> windows_core::Result<u32>;
    fn GetTotalNumberThreads(&self, total: *mut u32, largestprocess: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetThreadIdByProcessor(&self, processor: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadTeb(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByTeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentThreadSystemId(&self) -> windows_core::Result<u32>;
    fn GetThreadIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentThreadHandle(&self) -> windows_core::Result<u64>;
    fn GetThreadIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetNumberProcesses(&self) -> windows_core::Result<u32>;
    fn GetProcessIdsByIndex(&self, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByDataOffset(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessPeb(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByPeb(&self, offset: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessSystemId(&self) -> windows_core::Result<u32>;
    fn GetProcessIdBySystemId(&self, sysid: u32) -> windows_core::Result<u32>;
    fn GetCurrentProcessHandle(&self) -> windows_core::Result<u64>;
    fn GetProcessIdByHandle(&self, handle: u64) -> windows_core::Result<u32>;
    fn GetCurrentProcessExecutableName(&self, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessUpTime(&self) -> windows_core::Result<u32>;
    fn GetImplicitThreadDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitThreadDataOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetImplicitProcessDataOffset(&self) -> windows_core::Result<u64>;
    fn SetImplicitProcessDataOffset(&self, offset: u64) -> windows_core::Result<()>;
    fn GetEventSystem(&self) -> windows_core::Result<u32>;
    fn GetCurrentSystemId(&self) -> windows_core::Result<u32>;
    fn SetCurrentSystemId(&self, id: u32) -> windows_core::Result<()>;
    fn GetNumberSystems(&self) -> windows_core::Result<u32>;
    fn GetSystemIdsByIndex(&self, start: u32, count: u32, ids: *mut u32) -> windows_core::Result<()>;
    fn GetTotalNumberThreadsAndProcesses(&self, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentSystemServer(&self) -> windows_core::Result<u64>;
    fn GetSystemByServer(&self, server: u64) -> windows_core::Result<u32>;
    fn GetCurrentSystemServerName(&self, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentProcessExecutableNameWide(&self, buffer: windows_core::PWSTR, buffersize: u32, exesize: *mut u32) -> windows_core::Result<()>;
    fn GetCurrentSystemServerNameWide(&self, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::Result<()>;
}
impl IDebugSystemObjects4_Vtbl {
    pub const fn new<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventThread<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetEventThread(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventProcess<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetEventProcess(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentThreadId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentThreadId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::SetCurrentThreadId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentProcessId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::SetCurrentProcessId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberThreads<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetNumberThreads(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTotalNumberThreads<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, total: *mut u32, largestprocess: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetTotalNumberThreads(this, core::mem::transmute_copy(&total), core::mem::transmute_copy(&largestprocess)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdsByIndex<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetThreadIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetThreadIdByProcessor<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processor: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetThreadIdByProcessor(this, core::mem::transmute_copy(&processor)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetThreadIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadTeb<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentThreadTeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByTeb<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetThreadIdByTeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadSystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentThreadSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdBySystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetThreadIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentThreadHandle<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentThreadHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetThreadIdByHandle<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetThreadIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberProcesses<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetNumberProcesses(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdsByIndex<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32, sysids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetProcessIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids), core::mem::transmute_copy(&sysids)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetProcessIdByDataOffset(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessPeb<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessPeb(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByPeb<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetProcessIdByPeb(this, core::mem::transmute_copy(&offset)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessSystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessSystemId(this) {
                    Ok(ok__) => {
                        sysid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdBySystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sysid: u32, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetProcessIdBySystemId(this, core::mem::transmute_copy(&sysid)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessHandle<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessHandle(this) {
                    Ok(ok__) => {
                        handle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProcessIdByHandle<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, handle: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetProcessIdByHandle(this, core::mem::transmute_copy(&handle)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentProcessExecutableName<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, exesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetCurrentProcessExecutableName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&exesize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessUpTime<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uptime: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentProcessUpTime(this) {
                    Ok(ok__) => {
                        uptime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetImplicitThreadDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetImplicitThreadDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitThreadDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::SetImplicitThreadDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetImplicitProcessDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetImplicitProcessDataOffset(this) {
                    Ok(ok__) => {
                        offset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetImplicitProcessDataOffset<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, offset: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::SetImplicitProcessDataOffset(this, core::mem::transmute_copy(&offset)).into()
            }
        }
        unsafe extern "system" fn GetEventSystem<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetEventSystem(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentSystemId(this) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentSystemId<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::SetCurrentSystemId(this, core::mem::transmute_copy(&id)).into()
            }
        }
        unsafe extern "system" fn GetNumberSystems<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, number: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetNumberSystems(this) {
                    Ok(ok__) => {
                        number.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemIdsByIndex<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, start: u32, count: u32, ids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetSystemIdsByIndex(this, core::mem::transmute_copy(&start), core::mem::transmute_copy(&count), core::mem::transmute_copy(&ids)).into()
            }
        }
        unsafe extern "system" fn GetTotalNumberThreadsAndProcesses<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, totalthreads: *mut u32, totalprocesses: *mut u32, largestprocessthreads: *mut u32, largestsystemthreads: *mut u32, largestsystemprocesses: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetTotalNumberThreadsAndProcesses(this, core::mem::transmute_copy(&totalthreads), core::mem::transmute_copy(&totalprocesses), core::mem::transmute_copy(&largestprocessthreads), core::mem::transmute_copy(&largestsystemthreads), core::mem::transmute_copy(&largestsystemprocesses)).into()
            }
        }
        unsafe extern "system" fn GetCurrentSystemServer<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetCurrentSystemServer(this) {
                    Ok(ok__) => {
                        server.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSystemByServer<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, server: u64, id: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDebugSystemObjects4_Impl::GetSystemByServer(this, core::mem::transmute_copy(&server)) {
                    Ok(ok__) => {
                        id.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSystemServerName<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetCurrentSystemServerName(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentProcessExecutableNameWide<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, exesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetCurrentProcessExecutableNameWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&exesize)).into()
            }
        }
        unsafe extern "system" fn GetCurrentSystemServerNameWide<Identity: IDebugSystemObjects4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buffer: windows_core::PWSTR, buffersize: u32, namesize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDebugSystemObjects4_Impl::GetCurrentSystemServerNameWide(this, core::mem::transmute_copy(&buffer), core::mem::transmute_copy(&buffersize), core::mem::transmute_copy(&namesize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventThread: GetEventThread::<Identity, OFFSET>,
            GetEventProcess: GetEventProcess::<Identity, OFFSET>,
            GetCurrentThreadId: GetCurrentThreadId::<Identity, OFFSET>,
            SetCurrentThreadId: SetCurrentThreadId::<Identity, OFFSET>,
            GetCurrentProcessId: GetCurrentProcessId::<Identity, OFFSET>,
            SetCurrentProcessId: SetCurrentProcessId::<Identity, OFFSET>,
            GetNumberThreads: GetNumberThreads::<Identity, OFFSET>,
            GetTotalNumberThreads: GetTotalNumberThreads::<Identity, OFFSET>,
            GetThreadIdsByIndex: GetThreadIdsByIndex::<Identity, OFFSET>,
            GetThreadIdByProcessor: GetThreadIdByProcessor::<Identity, OFFSET>,
            GetCurrentThreadDataOffset: GetCurrentThreadDataOffset::<Identity, OFFSET>,
            GetThreadIdByDataOffset: GetThreadIdByDataOffset::<Identity, OFFSET>,
            GetCurrentThreadTeb: GetCurrentThreadTeb::<Identity, OFFSET>,
            GetThreadIdByTeb: GetThreadIdByTeb::<Identity, OFFSET>,
            GetCurrentThreadSystemId: GetCurrentThreadSystemId::<Identity, OFFSET>,
            GetThreadIdBySystemId: GetThreadIdBySystemId::<Identity, OFFSET>,
            GetCurrentThreadHandle: GetCurrentThreadHandle::<Identity, OFFSET>,
            GetThreadIdByHandle: GetThreadIdByHandle::<Identity, OFFSET>,
            GetNumberProcesses: GetNumberProcesses::<Identity, OFFSET>,
            GetProcessIdsByIndex: GetProcessIdsByIndex::<Identity, OFFSET>,
            GetCurrentProcessDataOffset: GetCurrentProcessDataOffset::<Identity, OFFSET>,
            GetProcessIdByDataOffset: GetProcessIdByDataOffset::<Identity, OFFSET>,
            GetCurrentProcessPeb: GetCurrentProcessPeb::<Identity, OFFSET>,
            GetProcessIdByPeb: GetProcessIdByPeb::<Identity, OFFSET>,
            GetCurrentProcessSystemId: GetCurrentProcessSystemId::<Identity, OFFSET>,
            GetProcessIdBySystemId: GetProcessIdBySystemId::<Identity, OFFSET>,
            GetCurrentProcessHandle: GetCurrentProcessHandle::<Identity, OFFSET>,
            GetProcessIdByHandle: GetProcessIdByHandle::<Identity, OFFSET>,
            GetCurrentProcessExecutableName: GetCurrentProcessExecutableName::<Identity, OFFSET>,
            GetCurrentProcessUpTime: GetCurrentProcessUpTime::<Identity, OFFSET>,
            GetImplicitThreadDataOffset: GetImplicitThreadDataOffset::<Identity, OFFSET>,
            SetImplicitThreadDataOffset: SetImplicitThreadDataOffset::<Identity, OFFSET>,
            GetImplicitProcessDataOffset: GetImplicitProcessDataOffset::<Identity, OFFSET>,
            SetImplicitProcessDataOffset: SetImplicitProcessDataOffset::<Identity, OFFSET>,
            GetEventSystem: GetEventSystem::<Identity, OFFSET>,
            GetCurrentSystemId: GetCurrentSystemId::<Identity, OFFSET>,
            SetCurrentSystemId: SetCurrentSystemId::<Identity, OFFSET>,
            GetNumberSystems: GetNumberSystems::<Identity, OFFSET>,
            GetSystemIdsByIndex: GetSystemIdsByIndex::<Identity, OFFSET>,
            GetTotalNumberThreadsAndProcesses: GetTotalNumberThreadsAndProcesses::<Identity, OFFSET>,
            GetCurrentSystemServer: GetCurrentSystemServer::<Identity, OFFSET>,
            GetSystemByServer: GetSystemByServer::<Identity, OFFSET>,
            GetCurrentSystemServerName: GetCurrentSystemServerName::<Identity, OFFSET>,
            GetCurrentProcessExecutableNameWide: GetCurrentProcessExecutableNameWide::<Identity, OFFSET>,
            GetCurrentSystemServerNameWide: GetCurrentSystemServerNameWide::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDebugSystemObjects4 as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDebugSystemObjects4 {}
windows_core::imp::define_interface!(IDynamicConceptProviderConcept, IDynamicConceptProviderConcept_Vtbl, 0x95a7f7dd_602e_483f_9d06_a15c0ee13174);
windows_core::imp::interface_hierarchy!(IDynamicConceptProviderConcept, windows_core::IUnknown);
impl IDynamicConceptProviderConcept {
    pub unsafe fn GetConcept<P0>(&self, contextobject: P0, conceptid: *const windows_core::GUID, conceptinterface: *mut Option<windows_core::IUnknown>, conceptmetadata: Option<*mut Option<IKeyStore>>, hasconcept: *mut bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetConcept)(windows_core::Interface::as_raw(self), contextobject.param().abi(), conceptid, core::mem::transmute(conceptinterface), conceptmetadata.unwrap_or(core::mem::zeroed()) as _, hasconcept as _).ok() }
    }
    pub unsafe fn SetConcept<P0, P2, P3>(&self, contextobject: P0, conceptid: *const windows_core::GUID, conceptinterface: P2, conceptmetadata: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P2: windows_core::Param<windows_core::IUnknown>,
        P3: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetConcept)(windows_core::Interface::as_raw(self), contextobject.param().abi(), conceptid, conceptinterface.param().abi(), conceptmetadata.param().abi()).ok() }
    }
    pub unsafe fn NotifyParent<P0>(&self, parentmodel: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).NotifyParent)(windows_core::Interface::as_raw(self), parentmodel.param().abi()).ok() }
    }
    pub unsafe fn NotifyParentChange<P0>(&self, parentmodel: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).NotifyParentChange)(windows_core::Interface::as_raw(self), parentmodel.param().abi()).ok() }
    }
    pub unsafe fn NotifyDestruct(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NotifyDestruct)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDynamicConceptProviderConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetConcept: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub SetConcept: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NotifyParent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NotifyParentChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NotifyDestruct: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDynamicConceptProviderConcept_Impl: windows_core::IUnknownImpl {
    fn GetConcept(&self, contextobject: windows_core::Ref<'_, IModelObject>, conceptid: *const windows_core::GUID, conceptinterface: windows_core::OutRef<'_, windows_core::IUnknown>, conceptmetadata: windows_core::OutRef<'_, IKeyStore>, hasconcept: *mut bool) -> windows_core::Result<()>;
    fn SetConcept(&self, contextobject: windows_core::Ref<'_, IModelObject>, conceptid: *const windows_core::GUID, conceptinterface: windows_core::Ref<'_, windows_core::IUnknown>, conceptmetadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn NotifyParent(&self, parentmodel: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn NotifyParentChange(&self, parentmodel: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn NotifyDestruct(&self) -> windows_core::Result<()>;
}
impl IDynamicConceptProviderConcept_Vtbl {
    pub const fn new<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetConcept<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicConceptProviderConcept_Impl::GetConcept(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&conceptid), core::mem::transmute_copy(&conceptinterface), core::mem::transmute_copy(&conceptmetadata), core::mem::transmute_copy(&hasconcept)).into()
            }
        }
        unsafe extern "system" fn SetConcept<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicConceptProviderConcept_Impl::SetConcept(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&conceptid), core::mem::transmute_copy(&conceptinterface), core::mem::transmute_copy(&conceptmetadata)).into()
            }
        }
        unsafe extern "system" fn NotifyParent<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, parentmodel: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicConceptProviderConcept_Impl::NotifyParent(this, core::mem::transmute_copy(&parentmodel)).into()
            }
        }
        unsafe extern "system" fn NotifyParentChange<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, parentmodel: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicConceptProviderConcept_Impl::NotifyParentChange(this, core::mem::transmute_copy(&parentmodel)).into()
            }
        }
        unsafe extern "system" fn NotifyDestruct<Identity: IDynamicConceptProviderConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicConceptProviderConcept_Impl::NotifyDestruct(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetConcept: GetConcept::<Identity, OFFSET>,
            SetConcept: SetConcept::<Identity, OFFSET>,
            NotifyParent: NotifyParent::<Identity, OFFSET>,
            NotifyParentChange: NotifyParentChange::<Identity, OFFSET>,
            NotifyDestruct: NotifyDestruct::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDynamicConceptProviderConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDynamicConceptProviderConcept {}
windows_core::imp::define_interface!(IDynamicKeyProviderConcept, IDynamicKeyProviderConcept_Vtbl, 0xe7983fa1_80a7_498c_988f_518ddc5d4025);
windows_core::imp::interface_hierarchy!(IDynamicKeyProviderConcept, windows_core::IUnknown);
impl IDynamicKeyProviderConcept {
    pub unsafe fn GetKey<P0, P1>(&self, contextobject: P0, key: P1, keyvalue: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>, haskey: Option<*mut bool>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKey)(windows_core::Interface::as_raw(self), contextobject.param().abi(), key.param().abi(), keyvalue.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _, haskey.unwrap_or(core::mem::zeroed()) as _).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::Param<IModelObject>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IModelObject>,
        P3: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKey)(windows_core::Interface::as_raw(self), contextobject.param().abi(), key.param().abi(), keyvalue.param().abi(), metadata.param().abi()).ok() }
    }
    pub unsafe fn EnumerateKeys<P0>(&self, contextobject: P0) -> windows_core::Result<IKeyEnumerator>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateKeys)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDynamicKeyProviderConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
    pub SetKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateKeys: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IDynamicKeyProviderConcept_Impl: windows_core::IUnknownImpl {
    fn GetKey(&self, contextobject: windows_core::Ref<'_, IModelObject>, key: &windows_core::PCWSTR, keyvalue: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>, haskey: *mut bool) -> windows_core::Result<()>;
    fn SetKey(&self, contextobject: windows_core::Ref<'_, IModelObject>, key: &windows_core::PCWSTR, keyvalue: windows_core::Ref<'_, IModelObject>, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn EnumerateKeys(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IKeyEnumerator>;
}
impl IDynamicKeyProviderConcept_Vtbl {
    pub const fn new<Identity: IDynamicKeyProviderConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetKey<Identity: IDynamicKeyProviderConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicKeyProviderConcept_Impl::GetKey(this, core::mem::transmute_copy(&contextobject), core::mem::transmute(&key), core::mem::transmute_copy(&keyvalue), core::mem::transmute_copy(&metadata), core::mem::transmute_copy(&haskey)).into()
            }
        }
        unsafe extern "system" fn SetKey<Identity: IDynamicKeyProviderConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDynamicKeyProviderConcept_Impl::SetKey(this, core::mem::transmute_copy(&contextobject), core::mem::transmute(&key), core::mem::transmute_copy(&keyvalue), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn EnumerateKeys<Identity: IDynamicKeyProviderConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, ppenumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDynamicKeyProviderConcept_Impl::EnumerateKeys(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        ppenumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetKey: GetKey::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            EnumerateKeys: EnumerateKeys::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDynamicKeyProviderConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDynamicKeyProviderConcept {}
windows_core::imp::define_interface!(IEquatableConcept, IEquatableConcept_Vtbl, 0xc52d5d3d_609d_4d5d_8a82_46b0acdec4f4);
windows_core::imp::interface_hierarchy!(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::Param<IModelObject>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AreObjectsEqual)(windows_core::Interface::as_raw(self), contextobject.param().abi(), otherobject.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEquatableConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AreObjectsEqual: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
pub trait IEquatableConcept_Impl: windows_core::IUnknownImpl {
    fn AreObjectsEqual(&self, contextobject: windows_core::Ref<'_, IModelObject>, otherobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<bool>;
}
impl IEquatableConcept_Vtbl {
    pub const fn new<Identity: IEquatableConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AreObjectsEqual<Identity: IEquatableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, otherobject: *mut core::ffi::c_void, isequal: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEquatableConcept_Impl::AreObjectsEqual(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&otherobject)) {
                    Ok(ok__) => {
                        isequal.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AreObjectsEqual: AreObjectsEqual::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEquatableConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEquatableConcept {}
pub const IG_DISASSEMBLE_BUFFER: u32 = 44u32;
pub const IG_DUMP_SYMBOL_INFO: u32 = 22u32;
pub const IG_FIND_FILE: u32 = 40u32;
pub const IG_GET_ANY_MODULE_IN_RANGE: u32 = 45u32;
pub const IG_GET_BUS_DATA: u32 = 20u32;
pub const IG_GET_CACHE_SIZE: u32 = 32u32;
pub const IG_GET_CLR_DATA_INTERFACE: u32 = 38u32;
pub const IG_GET_CONTEXT_EX: u32 = 48u32;
pub const IG_GET_CURRENT_PROCESS: u32 = 26u32;
pub const IG_GET_CURRENT_PROCESS_HANDLE: u32 = 28u32;
pub const IG_GET_CURRENT_THREAD: u32 = 25u32;
pub const IG_GET_DEBUGGER_DATA: u32 = 14u32;
pub const IG_GET_EXCEPTION_RECORD: u32 = 18u32;
pub const IG_GET_EXPRESSION_EX: u32 = 30u32;
pub const IG_GET_INPUT_LINE: u32 = 29u32;
pub const IG_GET_KERNEL_VERSION: u32 = 15u32;
pub const IG_GET_PEB_ADDRESS: u32 = 129u32;
pub const IG_GET_SET_SYMPATH: u32 = 17u32;
pub const IG_GET_TEB_ADDRESS: u32 = 128u32;
pub const IG_GET_THREAD_OS_INFO: u32 = 37u32;
pub const IG_GET_TYPE_SIZE: u32 = 27u32;
pub const IG_IS_PTR64: u32 = 19u32;
pub const IG_KD_CONTEXT: u32 = 1u32;
pub const IG_KSTACK_HELP: u32 = 10u32;
pub const IG_LOWMEM_CHECK: u32 = 23u32;
pub const IG_MATCH_PATTERN_A: u32 = 39u32;
pub const IG_OBSOLETE_PLACEHOLDER_36: u32 = 36u32;
pub const IG_PHYSICAL_TO_VIRTUAL: u32 = 47u32;
pub const IG_POINTER_SEARCH_PHYSICAL: u32 = 35u32;
pub const IG_QUERY_TARGET_INTERFACE: u32 = 42u32;
pub const IG_READ_CONTROL_SPACE: u32 = 2u32;
pub const IG_READ_IO_SPACE: u32 = 4u32;
pub const IG_READ_IO_SPACE_EX: u32 = 8u32;
pub const IG_READ_MSR: u32 = 12u32;
pub const IG_READ_PHYSICAL: u32 = 6u32;
pub const IG_READ_PHYSICAL_WITH_FLAGS: u32 = 33u32;
pub const IG_RELOAD_SYMBOLS: u32 = 16u32;
pub const IG_SEARCH_MEMORY: u32 = 24u32;
pub const IG_SET_BUS_DATA: u32 = 21u32;
pub const IG_SET_THREAD: u32 = 11u32;
pub const IG_TRANSLATE_VIRTUAL_TO_PHYSICAL: u32 = 31u32;
pub const IG_TYPED_DATA: u32 = 43u32;
pub const IG_TYPED_DATA_OBSOLETE: u32 = 41u32;
pub const IG_VIRTUAL_TO_PHYSICAL: u32 = 46u32;
pub const IG_WRITE_CONTROL_SPACE: u32 = 3u32;
pub const IG_WRITE_IO_SPACE: u32 = 5u32;
pub const IG_WRITE_IO_SPACE_EX: u32 = 9u32;
pub const IG_WRITE_MSR: u32 = 13u32;
pub const IG_WRITE_PHYSICAL: u32 = 7u32;
pub const IG_WRITE_PHYSICAL_WITH_FLAGS: u32 = 34u32;
windows_core::imp::define_interface!(IHostDataModelAccess, IHostDataModelAccess_Vtbl, 0xf2bce54e_4835_4f8a_836e_7981e29904d1);
windows_core::imp::interface_hierarchy!(IHostDataModelAccess, windows_core::IUnknown);
impl IHostDataModelAccess {
    pub unsafe fn GetDataModel(&self, manager: *mut Option<IDataModelManager>, host: *mut Option<IDebugHost>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDataModel)(windows_core::Interface::as_raw(self), core::mem::transmute(manager), core::mem::transmute(host)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHostDataModelAccess_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDataModel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IHostDataModelAccess_Impl: windows_core::IUnknownImpl {
    fn GetDataModel(&self, manager: windows_core::OutRef<'_, IDataModelManager>, host: windows_core::OutRef<'_, IDebugHost>) -> windows_core::Result<()>;
}
impl IHostDataModelAccess_Vtbl {
    pub const fn new<Identity: IHostDataModelAccess_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDataModel<Identity: IHostDataModelAccess_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, manager: *mut *mut core::ffi::c_void, host: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHostDataModelAccess_Impl::GetDataModel(this, core::mem::transmute_copy(&manager), core::mem::transmute_copy(&host)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDataModel: GetDataModel::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHostDataModelAccess as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IHostDataModelAccess {}
windows_core::imp::define_interface!(IIndexableConcept, IIndexableConcept_Vtbl, 0xd1fad99f_3f53_4457_850c_8051df2d3fb5);
windows_core::imp::interface_hierarchy!(IIndexableConcept, windows_core::IUnknown);
impl IIndexableConcept {
    pub unsafe fn GetDimensionality<P0>(&self, contextobject: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDimensionality)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetAt<P0>(&self, contextobject: P0, indexers: &[Option<IModelObject>], object: *mut Option<IModelObject>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetAt)(windows_core::Interface::as_raw(self), contextobject.param().abi(), indexers.len().try_into().unwrap(), core::mem::transmute(indexers.as_ptr()), core::mem::transmute(object), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetAt<P0, P3>(&self, contextobject: P0, indexers: &[Option<IModelObject>], value: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P3: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAt)(windows_core::Interface::as_raw(self), contextobject.param().abi(), indexers.len().try_into().unwrap(), core::mem::transmute(indexers.as_ptr()), value.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IIndexableConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDimensionality: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetAt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u64, *const *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetAt: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u64, *const *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IIndexableConcept_Impl: windows_core::IUnknownImpl {
    fn GetDimensionality(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<u64>;
    fn GetAt(&self, contextobject: windows_core::Ref<'_, IModelObject>, indexercount: u64, indexers: *const Option<IModelObject>, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetAt(&self, contextobject: windows_core::Ref<'_, IModelObject>, indexercount: u64, indexers: *const Option<IModelObject>, value: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
}
impl IIndexableConcept_Vtbl {
    pub const fn new<Identity: IIndexableConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDimensionality<Identity: IIndexableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, dimensionality: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IIndexableConcept_Impl::GetDimensionality(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        dimensionality.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAt<Identity: IIndexableConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IIndexableConcept_Impl::GetAt(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&indexercount), core::mem::transmute_copy(&indexers), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetAt<Identity: IIndexableConcept_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IIndexableConcept_Impl::SetAt(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&indexercount), core::mem::transmute_copy(&indexers), core::mem::transmute_copy(&value)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDimensionality: GetDimensionality::<Identity, OFFSET>,
            GetAt: GetAt::<Identity, OFFSET>,
            SetAt: SetAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIndexableConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IIndexableConcept {}
windows_core::imp::define_interface!(IIterableConcept, IIterableConcept_Vtbl, 0xf5d49d0c_0b02_4301_9c9b_b3a6037628f3);
windows_core::imp::interface_hierarchy!(IIterableConcept, windows_core::IUnknown);
impl IIterableConcept {
    pub unsafe fn GetDefaultIndexDimensionality<P0>(&self, contextobject: P0) -> windows_core::Result<u64>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultIndexDimensionality)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetIterator<P0>(&self, contextobject: P0) -> windows_core::Result<IModelIterator>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIterator)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IIterableConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDefaultIndexDimensionality: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetIterator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IIterableConcept_Impl: windows_core::IUnknownImpl {
    fn GetDefaultIndexDimensionality(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<u64>;
    fn GetIterator(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IModelIterator>;
}
impl IIterableConcept_Vtbl {
    pub const fn new<Identity: IIterableConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDefaultIndexDimensionality<Identity: IIterableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, dimensionality: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IIterableConcept_Impl::GetDefaultIndexDimensionality(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        dimensionality.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIterator<Identity: IIterableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, iterator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IIterableConcept_Impl::GetIterator(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        iterator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDefaultIndexDimensionality: GetDefaultIndexDimensionality::<Identity, OFFSET>,
            GetIterator: GetIterator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIterableConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IIterableConcept {}
windows_core::imp::define_interface!(IKeyEnumerator, IKeyEnumerator_Vtbl, 0x345fa92e_5e00_4319_9cae_971f7601cdcf);
windows_core::imp::interface_hierarchy!(IKeyEnumerator, windows_core::IUnknown);
impl IKeyEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self, key: *mut windows_core::BSTR, value: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), core::mem::transmute(key), value.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IKeyEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IKeyEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self, key: *mut windows_core::BSTR, value: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IKeyEnumerator_Vtbl {
    pub const fn new<Identity: IKeyEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IKeyEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IKeyEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *mut *mut core::ffi::c_void, value: *mut *mut core::ffi::c_void, metadata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyEnumerator_Impl::GetNext(this, core::mem::transmute_copy(&key), core::mem::transmute_copy(&value), core::mem::transmute_copy(&metadata)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKeyEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IKeyEnumerator {}
windows_core::imp::define_interface!(IKeyStore, IKeyStore_Vtbl, 0x0fc7557d_401d_4fca_9365_da1e9850697c);
windows_core::imp::interface_hierarchy!(IKeyStore, windows_core::IUnknown);
impl IKeyStore {
    pub unsafe fn GetKey<P0>(&self, key: P0, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKey)(windows_core::Interface::as_raw(self), key.param().abi(), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKey<P0, P1, P2>(&self, key: P0, object: P1, metadata: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
        P2: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKey)(windows_core::Interface::as_raw(self), key.param().abi(), object.param().abi(), metadata.param().abi()).ok() }
    }
    pub unsafe fn GetKeyValue<P0>(&self, key: P0, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKeyValue)(windows_core::Interface::as_raw(self), key.param().abi(), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKeyValue<P0, P1>(&self, key: P0, object: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKeyValue)(windows_core::Interface::as_raw(self), key.param().abi(), object.param().abi()).ok() }
    }
    pub unsafe fn ClearKeys(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearKeys)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IKeyStore_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetKey: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKey: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ClearKeys: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IKeyStore_Impl: windows_core::IUnknownImpl {
    fn GetKey(&self, key: &windows_core::PCWSTR, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKey(&self, key: &windows_core::PCWSTR, object: windows_core::Ref<'_, IModelObject>, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn GetKeyValue(&self, key: &windows_core::PCWSTR, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKeyValue(&self, key: &windows_core::PCWSTR, object: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn ClearKeys(&self) -> windows_core::Result<()>;
}
impl IKeyStore_Vtbl {
    pub const fn new<Identity: IKeyStore_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetKey<Identity: IKeyStore_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyStore_Impl::GetKey(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKey<Identity: IKeyStore_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyStore_Impl::SetKey(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn GetKeyValue<Identity: IKeyStore_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyStore_Impl::GetKeyValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKeyValue<Identity: IKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: windows_core::PCWSTR, object: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyStore_Impl::SetKeyValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&object)).into()
            }
        }
        unsafe extern "system" fn ClearKeys<Identity: IKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKeyStore_Impl::ClearKeys(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetKey: GetKey::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            GetKeyValue: GetKeyValue::<Identity, OFFSET>,
            SetKeyValue: SetKeyValue::<Identity, OFFSET>,
            ClearKeys: ClearKeys::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKeyStore as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IKeyStore {}
windows_core::imp::define_interface!(IModelIterator, IModelIterator_Vtbl, 0xe4622136_927d_4490_874f_581f3e4e3688);
windows_core::imp::interface_hierarchy!(IModelIterator, windows_core::IUnknown);
impl IModelIterator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self, object: *mut Option<IModelObject>, indexers: Option<&mut [Option<IModelObject>]>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (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().try_into().unwrap()), core::mem::transmute(indexers.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelIterator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IModelIterator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self, object: windows_core::OutRef<'_, IModelObject>, dimensions: u64, indexers: *mut Option<IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IModelIterator_Vtbl {
    pub const fn new<Identity: IModelIterator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IModelIterator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelIterator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IModelIterator_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelIterator_Impl::GetNext(this, core::mem::transmute_copy(&object), core::mem::transmute_copy(&dimensions), core::mem::transmute_copy(&indexers), core::mem::transmute_copy(&metadata)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelIterator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModelIterator {}
windows_core::imp::define_interface!(IModelKeyReference, IModelKeyReference_Vtbl, 0x5253dcf8_5aff_4c62_b302_56a289e00998);
windows_core::imp::interface_hierarchy!(IModelKeyReference, windows_core::IUnknown);
impl IModelKeyReference {
    pub unsafe fn GetKeyName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetKeyName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetOriginalObject(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOriginalObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetContextObject(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContextObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetKey(&self, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetKey)(windows_core::Interface::as_raw(self), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetKeyValue(&self, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetKeyValue)(windows_core::Interface::as_raw(self), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKey<P0, P1>(&self, object: P0, metadata: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKey)(windows_core::Interface::as_raw(self), object.param().abi(), metadata.param().abi()).ok() }
    }
    pub unsafe fn SetKeyValue<P0>(&self, object: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKeyValue)(windows_core::Interface::as_raw(self), object.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelKeyReference_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetKeyName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOriginalObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetContextObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IModelKeyReference_Impl: windows_core::IUnknownImpl {
    fn GetKeyName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetOriginalObject(&self) -> windows_core::Result<IModelObject>;
    fn GetContextObject(&self) -> windows_core::Result<IModelObject>;
    fn GetKey(&self, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn GetKeyValue(&self, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKey(&self, object: windows_core::Ref<'_, IModelObject>, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKeyValue(&self, object: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
}
impl IModelKeyReference_Vtbl {
    pub const fn new<Identity: IModelKeyReference_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetKeyName<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, keyname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelKeyReference_Impl::GetKeyName(this) {
                    Ok(ok__) => {
                        keyname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetOriginalObject<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, originalobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelKeyReference_Impl::GetOriginalObject(this) {
                    Ok(ok__) => {
                        originalobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetContextObject<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, containingobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelKeyReference_Impl::GetContextObject(this) {
                    Ok(ok__) => {
                        containingobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetKey<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void, metadata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelKeyReference_Impl::GetKey(this, core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn GetKeyValue<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void, metadata: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelKeyReference_Impl::GetKeyValue(this, core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKey<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut core::ffi::c_void, metadata: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelKeyReference_Impl::SetKey(this, core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKeyValue<Identity: IModelKeyReference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelKeyReference_Impl::SetKeyValue(this, core::mem::transmute_copy(&object)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetKeyName: GetKeyName::<Identity, OFFSET>,
            GetOriginalObject: GetOriginalObject::<Identity, OFFSET>,
            GetContextObject: GetContextObject::<Identity, OFFSET>,
            GetKey: GetKey::<Identity, OFFSET>,
            GetKeyValue: GetKeyValue::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            SetKeyValue: SetKeyValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelKeyReference as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModelKeyReference {}
windows_core::imp::define_interface!(IModelKeyReference2, IModelKeyReference2_Vtbl, 0x80e2f7c5_7159_4e92_887e_7e0347e88406);
impl core::ops::Deref for IModelKeyReference2 {
    type Target = IModelKeyReference;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IModelKeyReference2, windows_core::IUnknown, IModelKeyReference);
impl IModelKeyReference2 {
    pub unsafe fn OverrideContextObject<P0>(&self, newcontextobject: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).OverrideContextObject)(windows_core::Interface::as_raw(self), newcontextobject.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelKeyReference2_Vtbl {
    pub base__: IModelKeyReference_Vtbl,
    pub OverrideContextObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IModelKeyReference2_Impl: IModelKeyReference_Impl {
    fn OverrideContextObject(&self, newcontextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
}
impl IModelKeyReference2_Vtbl {
    pub const fn new<Identity: IModelKeyReference2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OverrideContextObject<Identity: IModelKeyReference2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, newcontextobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelKeyReference2_Impl::OverrideContextObject(this, core::mem::transmute_copy(&newcontextobject)).into()
            }
        }
        Self { base__: IModelKeyReference_Vtbl::new::<Identity, OFFSET>(), OverrideContextObject: OverrideContextObject::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelKeyReference2 as windows_core::Interface>::IID || iid == &<IModelKeyReference as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModelKeyReference2 {}
windows_core::imp::define_interface!(IModelMethod, IModelMethod_Vtbl, 0x80600c1f_b90b_4896_82ad_1c00207909e8);
windows_core::imp::interface_hierarchy!(IModelMethod, windows_core::IUnknown);
impl IModelMethod {
    pub unsafe fn Call<P0>(&self, pcontextobject: P0, pparguments: &[Option<IModelObject>], ppresult: *mut Option<IModelObject>, ppmetadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Call)(windows_core::Interface::as_raw(self), pcontextobject.param().abi(), pparguments.len().try_into().unwrap(), core::mem::transmute(pparguments.as_ptr()), core::mem::transmute(ppresult), ppmetadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelMethod_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Call: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u64, *const *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IModelMethod_Impl: windows_core::IUnknownImpl {
    fn Call(&self, pcontextobject: windows_core::Ref<'_, IModelObject>, argcount: u64, pparguments: *const Option<IModelObject>, ppresult: windows_core::OutRef<'_, IModelObject>, ppmetadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
}
impl IModelMethod_Vtbl {
    pub const fn new<Identity: IModelMethod_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Call<Identity: IModelMethod_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelMethod_Impl::Call(this, core::mem::transmute_copy(&pcontextobject), core::mem::transmute_copy(&argcount), core::mem::transmute_copy(&pparguments), core::mem::transmute_copy(&ppresult), core::mem::transmute_copy(&ppmetadata)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Call: Call::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelMethod as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModelMethod {}
windows_core::imp::define_interface!(IModelObject, IModelObject_Vtbl, 0xe28c7893_3f4b_4b96_baca_293cdc55f45d);
windows_core::imp::interface_hierarchy!(IModelObject, windows_core::IUnknown);
impl IModelObject {
    pub unsafe fn GetContext(&self) -> windows_core::Result<IDebugHostContext> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetKind(&self) -> windows_core::Result<ModelObjectKind> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetKind)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetIntrinsicValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIntrinsicValue)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetIntrinsicValueAs(&self, vt: super::super::super::Variant::VARENUM) -> windows_core::Result<super::super::super::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIntrinsicValueAs)(windows_core::Interface::as_raw(self), vt, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetKeyValue<P0>(&self, key: P0, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKeyValue)(windows_core::Interface::as_raw(self), key.param().abi(), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKeyValue<P0, P1>(&self, key: P0, object: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKeyValue)(windows_core::Interface::as_raw(self), key.param().abi(), object.param().abi()).ok() }
    }
    pub unsafe fn EnumerateKeyValues(&self) -> windows_core::Result<IKeyEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateKeyValues)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetRawValue<P1>(&self, kind: SymbolKind, name: P1, searchflags: u32) -> windows_core::Result<IModelObject>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRawValue)(windows_core::Interface::as_raw(self), kind, name.param().abi(), searchflags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateRawValues(&self, kind: SymbolKind, searchflags: u32) -> windows_core::Result<IRawEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateRawValues)(windows_core::Interface::as_raw(self), kind, searchflags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Dereference(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Dereference)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn TryCastToRuntimeType(&self) -> windows_core::Result<IModelObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).TryCastToRuntimeType)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetConcept(&self, conceptid: *const windows_core::GUID, conceptinterface: *mut Option<windows_core::IUnknown>, conceptmetadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetConcept)(windows_core::Interface::as_raw(self), conceptid, core::mem::transmute(conceptinterface), conceptmetadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetLocation(&self) -> windows_core::Result<Location> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLocation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeInfo(&self) -> windows_core::Result<IDebugHostType> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeInfo)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetTargetInfo(&self, location: *mut Location, r#type: *mut Option<IDebugHostType>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTargetInfo)(windows_core::Interface::as_raw(self), location as _, core::mem::transmute(r#type)).ok() }
    }
    pub unsafe fn GetNumberOfParentModels(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOfParentModels)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetParentModel(&self, i: u64, model: *mut Option<IModelObject>, contextobject: *mut Option<IModelObject>) -> windows_core::Result<()> {
        unsafe { (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::Param<IModelObject>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddParentModel)(windows_core::Interface::as_raw(self), model.param().abi(), contextobject.param().abi(), r#override).ok() }
    }
    pub unsafe fn RemoveParentModel<P0>(&self, model: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveParentModel)(windows_core::Interface::as_raw(self), model.param().abi()).ok() }
    }
    pub unsafe fn GetKey<P0>(&self, key: P0, object: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKey)(windows_core::Interface::as_raw(self), key.param().abi(), object.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetKeyReference<P0>(&self, key: P0, objectreference: Option<*mut Option<IModelObject>>, metadata: Option<*mut Option<IKeyStore>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetKeyReference)(windows_core::Interface::as_raw(self), key.param().abi(), objectreference.unwrap_or(core::mem::zeroed()) as _, metadata.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetKey<P0, P1, P2>(&self, key: P0, object: P1, metadata: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
        P2: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetKey)(windows_core::Interface::as_raw(self), key.param().abi(), object.param().abi(), metadata.param().abi()).ok() }
    }
    pub unsafe fn ClearKeys(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearKeys)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EnumerateKeys(&self) -> windows_core::Result<IKeyEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateKeys)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateKeyReferences(&self) -> windows_core::Result<IKeyEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateKeyReferences)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetConcept<P1, P2>(&self, conceptid: *const windows_core::GUID, conceptinterface: P1, conceptmetadata: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
        P2: windows_core::Param<IKeyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetConcept)(windows_core::Interface::as_raw(self), conceptid, conceptinterface.param().abi(), conceptmetadata.param().abi()).ok() }
    }
    pub unsafe fn ClearConcepts(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearConcepts)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRawReference<P1>(&self, kind: SymbolKind, name: P1, searchflags: u32) -> windows_core::Result<IModelObject>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRawReference)(windows_core::Interface::as_raw(self), kind, name.param().abi(), searchflags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumerateRawReferences(&self, kind: SymbolKind, searchflags: u32) -> windows_core::Result<IRawEnumerator> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumerateRawReferences)(windows_core::Interface::as_raw(self), kind, searchflags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetContextForDataModel<P0, P1>(&self, datamodelobject: P0, context: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetContextForDataModel)(windows_core::Interface::as_raw(self), datamodelobject.param().abi(), context.param().abi()).ok() }
    }
    pub unsafe fn GetContextForDataModel<P0>(&self, datamodelobject: P0) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContextForDataModel)(windows_core::Interface::as_raw(self), datamodelobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Compare<P0>(&self, other: P0, ppresult: Option<*mut Option<IModelObject>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Compare)(windows_core::Interface::as_raw(self), other.param().abi(), ppresult.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsEqualTo<P0>(&self, other: P0) -> windows_core::Result<bool>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsEqualTo)(windows_core::Interface::as_raw(self), other.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelObject_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ModelObjectKind) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetIntrinsicValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetIntrinsicValue: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetIntrinsicValueAs: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::super::Variant::VARENUM, *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetIntrinsicValueAs: usize,
    pub GetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKeyValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateKeyValues: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRawValue: unsafe extern "system" fn(*mut core::ffi::c_void, SymbolKind, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateRawValues: unsafe extern "system" fn(*mut core::ffi::c_void, SymbolKind, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Dereference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TryCastToRuntimeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetConcept: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location) -> windows_core::HRESULT,
    pub GetTypeInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetTargetInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Location, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNumberOfParentModels: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetParentModel: unsafe extern "system" fn(*mut core::ffi::c_void, u64, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddParentModel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, u8) -> windows_core::HRESULT,
    pub RemoveParentModel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKey: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetKeyReference: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetKey: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ClearKeys: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateKeys: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateKeyReferences: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetConcept: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ClearConcepts: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRawReference: unsafe extern "system" fn(*mut core::ffi::c_void, SymbolKind, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumerateRawReferences: unsafe extern "system" fn(*mut core::ffi::c_void, SymbolKind, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetContextForDataModel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetContextForDataModel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Compare: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsEqualTo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut bool) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IModelObject_Impl: windows_core::IUnknownImpl {
    fn GetContext(&self) -> windows_core::Result<IDebugHostContext>;
    fn GetKind(&self) -> windows_core::Result<ModelObjectKind>;
    fn GetIntrinsicValue(&self) -> windows_core::Result<super::super::super::Variant::VARIANT>;
    fn GetIntrinsicValueAs(&self, vt: super::super::super::Variant::VARENUM) -> windows_core::Result<super::super::super::Variant::VARIANT>;
    fn GetKeyValue(&self, key: &windows_core::PCWSTR, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKeyValue(&self, key: &windows_core::PCWSTR, object: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn EnumerateKeyValues(&self) -> windows_core::Result<IKeyEnumerator>;
    fn GetRawValue(&self, kind: SymbolKind, name: &windows_core::PCWSTR, searchflags: u32) -> windows_core::Result<IModelObject>;
    fn EnumerateRawValues(&self, kind: SymbolKind, searchflags: u32) -> windows_core::Result<IRawEnumerator>;
    fn Dereference(&self) -> windows_core::Result<IModelObject>;
    fn TryCastToRuntimeType(&self) -> windows_core::Result<IModelObject>;
    fn GetConcept(&self, conceptid: *const windows_core::GUID, conceptinterface: windows_core::OutRef<'_, windows_core::IUnknown>, conceptmetadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn GetLocation(&self) -> windows_core::Result<Location>;
    fn GetTypeInfo(&self) -> windows_core::Result<IDebugHostType>;
    fn GetTargetInfo(&self, location: *mut Location, r#type: windows_core::OutRef<'_, IDebugHostType>) -> windows_core::Result<()>;
    fn GetNumberOfParentModels(&self) -> windows_core::Result<u64>;
    fn GetParentModel(&self, i: u64, model: windows_core::OutRef<'_, IModelObject>, contextobject: windows_core::OutRef<'_, IModelObject>) -> windows_core::Result<()>;
    fn AddParentModel(&self, model: windows_core::Ref<'_, IModelObject>, contextobject: windows_core::Ref<'_, IModelObject>, r#override: u8) -> windows_core::Result<()>;
    fn RemoveParentModel(&self, model: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
    fn GetKey(&self, key: &windows_core::PCWSTR, object: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn GetKeyReference(&self, key: &windows_core::PCWSTR, objectreference: windows_core::OutRef<'_, IModelObject>, metadata: windows_core::OutRef<'_, IKeyStore>) -> windows_core::Result<()>;
    fn SetKey(&self, key: &windows_core::PCWSTR, object: windows_core::Ref<'_, IModelObject>, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn ClearKeys(&self) -> windows_core::Result<()>;
    fn EnumerateKeys(&self) -> windows_core::Result<IKeyEnumerator>;
    fn EnumerateKeyReferences(&self) -> windows_core::Result<IKeyEnumerator>;
    fn SetConcept(&self, conceptid: *const windows_core::GUID, conceptinterface: windows_core::Ref<'_, windows_core::IUnknown>, conceptmetadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<()>;
    fn ClearConcepts(&self) -> windows_core::Result<()>;
    fn GetRawReference(&self, kind: SymbolKind, name: &windows_core::PCWSTR, searchflags: u32) -> windows_core::Result<IModelObject>;
    fn EnumerateRawReferences(&self, kind: SymbolKind, searchflags: u32) -> windows_core::Result<IRawEnumerator>;
    fn SetContextForDataModel(&self, datamodelobject: windows_core::Ref<'_, IModelObject>, context: windows_core::Ref<'_, windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetContextForDataModel(&self, datamodelobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<windows_core::IUnknown>;
    fn Compare(&self, other: windows_core::Ref<'_, IModelObject>, ppresult: windows_core::OutRef<'_, IModelObject>) -> windows_core::Result<()>;
    fn IsEqualTo(&self, other: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<bool>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IModelObject_Vtbl {
    pub const fn new<Identity: IModelObject_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetContext<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetContext(this) {
                    Ok(ok__) => {
                        context.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetKind<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: *mut ModelObjectKind) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetKind(this) {
                    Ok(ok__) => {
                        kind.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIntrinsicValue<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, intrinsicdata: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetIntrinsicValue(this) {
                    Ok(ok__) => {
                        intrinsicdata.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIntrinsicValueAs<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vt: super::super::super::Variant::VARENUM, intrinsicdata: *mut super::super::super::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetIntrinsicValueAs(this, core::mem::transmute_copy(&vt)) {
                    Ok(ok__) => {
                        intrinsicdata.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetKeyValue<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetKeyValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKeyValue<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: windows_core::PCWSTR, object: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::SetKeyValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&object)).into()
            }
        }
        unsafe extern "system" fn EnumerateKeyValues<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::EnumerateKeyValues(this) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRawValue<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: SymbolKind, name: windows_core::PCWSTR, searchflags: u32, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetRawValue(this, core::mem::transmute_copy(&kind), core::mem::transmute(&name), core::mem::transmute_copy(&searchflags)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateRawValues<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: SymbolKind, searchflags: u32, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::EnumerateRawValues(this, core::mem::transmute_copy(&kind), core::mem::transmute_copy(&searchflags)) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Dereference<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::Dereference(this) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TryCastToRuntimeType<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, runtimetypedobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::TryCastToRuntimeType(this) {
                    Ok(ok__) => {
                        runtimetypedobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetConcept<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetConcept(this, core::mem::transmute_copy(&conceptid), core::mem::transmute_copy(&conceptinterface), core::mem::transmute_copy(&conceptmetadata)).into()
            }
        }
        unsafe extern "system" fn GetLocation<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, location: *mut Location) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetLocation(this) {
                    Ok(ok__) => {
                        location.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeInfo<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetTypeInfo(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTargetInfo<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, location: *mut Location, r#type: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetTargetInfo(this, core::mem::transmute_copy(&location), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn GetNumberOfParentModels<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nummodels: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetNumberOfParentModels(this) {
                    Ok(ok__) => {
                        nummodels.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetParentModel<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetParentModel(this, core::mem::transmute_copy(&i), core::mem::transmute_copy(&model), core::mem::transmute_copy(&contextobject)).into()
            }
        }
        unsafe extern "system" fn AddParentModel<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, model: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, r#override: u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::AddParentModel(this, core::mem::transmute_copy(&model), core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&r#override)).into()
            }
        }
        unsafe extern "system" fn RemoveParentModel<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, model: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::RemoveParentModel(this, core::mem::transmute_copy(&model)).into()
            }
        }
        unsafe extern "system" fn GetKey<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetKey(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn GetKeyReference<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::GetKeyReference(this, core::mem::transmute(&key), core::mem::transmute_copy(&objectreference), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn SetKey<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::SetKey(this, core::mem::transmute(&key), core::mem::transmute_copy(&object), core::mem::transmute_copy(&metadata)).into()
            }
        }
        unsafe extern "system" fn ClearKeys<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::ClearKeys(this).into()
            }
        }
        unsafe extern "system" fn EnumerateKeys<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::EnumerateKeys(this) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateKeyReferences<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::EnumerateKeyReferences(this) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetConcept<Identity: IModelObject_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::SetConcept(this, core::mem::transmute_copy(&conceptid), core::mem::transmute_copy(&conceptinterface), core::mem::transmute_copy(&conceptmetadata)).into()
            }
        }
        unsafe extern "system" fn ClearConcepts<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::ClearConcepts(this).into()
            }
        }
        unsafe extern "system" fn GetRawReference<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: SymbolKind, name: windows_core::PCWSTR, searchflags: u32, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetRawReference(this, core::mem::transmute_copy(&kind), core::mem::transmute(&name), core::mem::transmute_copy(&searchflags)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumerateRawReferences<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kind: SymbolKind, searchflags: u32, enumerator: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::EnumerateRawReferences(this, core::mem::transmute_copy(&kind), core::mem::transmute_copy(&searchflags)) {
                    Ok(ok__) => {
                        enumerator.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetContextForDataModel<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, datamodelobject: *mut core::ffi::c_void, context: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::SetContextForDataModel(this, core::mem::transmute_copy(&datamodelobject), core::mem::transmute_copy(&context)).into()
            }
        }
        unsafe extern "system" fn GetContextForDataModel<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, datamodelobject: *mut core::ffi::c_void, context: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::GetContextForDataModel(this, core::mem::transmute_copy(&datamodelobject)) {
                    Ok(ok__) => {
                        context.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Compare<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, other: *mut core::ffi::c_void, ppresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelObject_Impl::Compare(this, core::mem::transmute_copy(&other), core::mem::transmute_copy(&ppresult)).into()
            }
        }
        unsafe extern "system" fn IsEqualTo<Identity: IModelObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, other: *mut core::ffi::c_void, equal: *mut bool) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelObject_Impl::IsEqualTo(this, core::mem::transmute_copy(&other)) {
                    Ok(ok__) => {
                        equal.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetContext: GetContext::<Identity, OFFSET>,
            GetKind: GetKind::<Identity, OFFSET>,
            GetIntrinsicValue: GetIntrinsicValue::<Identity, OFFSET>,
            GetIntrinsicValueAs: GetIntrinsicValueAs::<Identity, OFFSET>,
            GetKeyValue: GetKeyValue::<Identity, OFFSET>,
            SetKeyValue: SetKeyValue::<Identity, OFFSET>,
            EnumerateKeyValues: EnumerateKeyValues::<Identity, OFFSET>,
            GetRawValue: GetRawValue::<Identity, OFFSET>,
            EnumerateRawValues: EnumerateRawValues::<Identity, OFFSET>,
            Dereference: Dereference::<Identity, OFFSET>,
            TryCastToRuntimeType: TryCastToRuntimeType::<Identity, OFFSET>,
            GetConcept: GetConcept::<Identity, OFFSET>,
            GetLocation: GetLocation::<Identity, OFFSET>,
            GetTypeInfo: GetTypeInfo::<Identity, OFFSET>,
            GetTargetInfo: GetTargetInfo::<Identity, OFFSET>,
            GetNumberOfParentModels: GetNumberOfParentModels::<Identity, OFFSET>,
            GetParentModel: GetParentModel::<Identity, OFFSET>,
            AddParentModel: AddParentModel::<Identity, OFFSET>,
            RemoveParentModel: RemoveParentModel::<Identity, OFFSET>,
            GetKey: GetKey::<Identity, OFFSET>,
            GetKeyReference: GetKeyReference::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            ClearKeys: ClearKeys::<Identity, OFFSET>,
            EnumerateKeys: EnumerateKeys::<Identity, OFFSET>,
            EnumerateKeyReferences: EnumerateKeyReferences::<Identity, OFFSET>,
            SetConcept: SetConcept::<Identity, OFFSET>,
            ClearConcepts: ClearConcepts::<Identity, OFFSET>,
            GetRawReference: GetRawReference::<Identity, OFFSET>,
            EnumerateRawReferences: EnumerateRawReferences::<Identity, OFFSET>,
            SetContextForDataModel: SetContextForDataModel::<Identity, OFFSET>,
            GetContextForDataModel: GetContextForDataModel::<Identity, OFFSET>,
            Compare: Compare::<Identity, OFFSET>,
            IsEqualTo: IsEqualTo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelObject as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IModelObject {}
windows_core::imp::define_interface!(IModelPropertyAccessor, IModelPropertyAccessor_Vtbl, 0x5a0c63d9_0526_42b8_960c_9516a3254c85);
windows_core::imp::interface_hierarchy!(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::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), key.param().abi(), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetValue<P0, P1, P2>(&self, key: P0, contextobject: P1, value: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IModelObject>,
        P2: windows_core::Param<IModelObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetValue)(windows_core::Interface::as_raw(self), key.param().abi(), contextobject.param().abi(), value.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModelPropertyAccessor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetValue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IModelPropertyAccessor_Impl: windows_core::IUnknownImpl {
    fn GetValue(&self, key: &windows_core::PCWSTR, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IModelObject>;
    fn SetValue(&self, key: &windows_core::PCWSTR, contextobject: windows_core::Ref<'_, IModelObject>, value: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<()>;
}
impl IModelPropertyAccessor_Vtbl {
    pub const fn new<Identity: IModelPropertyAccessor_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetValue<Identity: IModelPropertyAccessor_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IModelPropertyAccessor_Impl::GetValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetValue<Identity: IModelPropertyAccessor_Impl, const OFFSET: isize>(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 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModelPropertyAccessor_Impl::SetValue(this, core::mem::transmute(&key), core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&value)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetValue: GetValue::<Identity, OFFSET>, SetValue: SetValue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModelPropertyAccessor as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModelPropertyAccessor {}
pub const INCORRECT_VERSION_INFO: u32 = 7u32;
#[repr(C)]
#[derive(Clone, Copy)]
pub union INLINE_FRAME_CONTEXT {
    pub ContextValue: u32,
    pub Anonymous: INLINE_FRAME_CONTEXT_0,
}
impl Default for INLINE_FRAME_CONTEXT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct INLINE_FRAME_CONTEXT_0 {
    pub FrameId: u8,
    pub FrameType: u8,
    pub FrameSignature: u16,
}
pub const INSUFFICIENT_SPACE_TO_COPY: u32 = 10u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE32 {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE64 {
    pub Address: u64,
    pub Length: u32,
    pub Data: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE_EX {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE_EX32 {
    pub Address: u32,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct IOSPACE_EX64 {
    pub Address: u64,
    pub Length: u32,
    pub Data: u32,
    pub InterfaceType: u32,
    pub BusNumber: u32,
    pub AddressSpace: u32,
}
windows_core::imp::define_interface!(IPreferredRuntimeTypeConcept, IPreferredRuntimeTypeConcept_Vtbl, 0x9d6c1d7b_a76f_4618_8068_5f76bd9a4e8a);
windows_core::imp::interface_hierarchy!(IPreferredRuntimeTypeConcept, windows_core::IUnknown);
impl IPreferredRuntimeTypeConcept {
    pub unsafe fn CastToPreferredRuntimeType<P0>(&self, contextobject: P0) -> windows_core::Result<IModelObject>
    where
        P0: windows_core::Param<IModelObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CastToPreferredRuntimeType)(windows_core::Interface::as_raw(self), contextobject.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreferredRuntimeTypeConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CastToPreferredRuntimeType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IPreferredRuntimeTypeConcept_Impl: windows_core::IUnknownImpl {
    fn CastToPreferredRuntimeType(&self, contextobject: windows_core::Ref<'_, IModelObject>) -> windows_core::Result<IModelObject>;
}
impl IPreferredRuntimeTypeConcept_Vtbl {
    pub const fn new<Identity: IPreferredRuntimeTypeConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CastToPreferredRuntimeType<Identity: IPreferredRuntimeTypeConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, object: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPreferredRuntimeTypeConcept_Impl::CastToPreferredRuntimeType(this, core::mem::transmute_copy(&contextobject)) {
                    Ok(ok__) => {
                        object.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CastToPreferredRuntimeType: CastToPreferredRuntimeType::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreferredRuntimeTypeConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPreferredRuntimeTypeConcept {}
windows_core::imp::define_interface!(IRawEnumerator, IRawEnumerator_Vtbl, 0xe13613f9_3a3c_40b5_8f48_1e5ebfb9b21b);
windows_core::imp::interface_hierarchy!(IRawEnumerator, windows_core::IUnknown);
impl IRawEnumerator {
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNext(&self, name: Option<*mut windows_core::BSTR>, kind: Option<*mut SymbolKind>, value: Option<*mut Option<IModelObject>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetNext)(windows_core::Interface::as_raw(self), name.unwrap_or(core::mem::zeroed()) as _, kind.unwrap_or(core::mem::zeroed()) as _, value.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IRawEnumerator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut SymbolKind, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IRawEnumerator_Impl: windows_core::IUnknownImpl {
    fn Reset(&self) -> windows_core::Result<()>;
    fn GetNext(&self, name: *mut windows_core::BSTR, kind: *mut SymbolKind, value: windows_core::OutRef<'_, IModelObject>) -> windows_core::Result<()>;
}
impl IRawEnumerator_Vtbl {
    pub const fn new<Identity: IRawEnumerator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Reset<Identity: IRawEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRawEnumerator_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn GetNext<Identity: IRawEnumerator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut *mut core::ffi::c_void, kind: *mut SymbolKind, value: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRawEnumerator_Impl::GetNext(this, core::mem::transmute_copy(&name), core::mem::transmute_copy(&kind), core::mem::transmute_copy(&value)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Reset: Reset::<Identity, OFFSET>, GetNext: GetNext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRawEnumerator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IRawEnumerator {}
windows_core::imp::define_interface!(IStringDisplayableConcept, IStringDisplayableConcept_Vtbl, 0xd28e8d70_6c00_4205_940d_501016601ea3);
windows_core::imp::interface_hierarchy!(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::Param<IModelObject>,
        P1: windows_core::Param<IKeyStore>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ToDisplayString)(windows_core::Interface::as_raw(self), contextobject.param().abi(), metadata.param().abi(), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStringDisplayableConcept_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ToDisplayString: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IStringDisplayableConcept_Impl: windows_core::IUnknownImpl {
    fn ToDisplayString(&self, contextobject: windows_core::Ref<'_, IModelObject>, metadata: windows_core::Ref<'_, IKeyStore>) -> windows_core::Result<windows_core::BSTR>;
}
impl IStringDisplayableConcept_Vtbl {
    pub const fn new<Identity: IStringDisplayableConcept_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ToDisplayString<Identity: IStringDisplayableConcept_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, contextobject: *mut core::ffi::c_void, metadata: *mut core::ffi::c_void, displaystring: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStringDisplayableConcept_Impl::ToDisplayString(this, core::mem::transmute_copy(&contextobject), core::mem::transmute_copy(&metadata)) {
                    Ok(ok__) => {
                        displaystring.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ToDisplayString: ToDisplayString::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStringDisplayableConcept as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStringDisplayableConcept {}
pub const Identical: SignatureComparison = SignatureComparison(4i32);
pub const IntrinsicBool: IntrinsicKind = IntrinsicKind(1i32);
pub const IntrinsicChar: IntrinsicKind = IntrinsicKind(2i32);
pub const IntrinsicChar16: IntrinsicKind = IntrinsicKind(10i32);
pub const IntrinsicChar32: IntrinsicKind = IntrinsicKind(11i32);
pub const IntrinsicFloat: IntrinsicKind = IntrinsicKind(8i32);
pub const IntrinsicHRESULT: IntrinsicKind = IntrinsicKind(9i32);
pub const IntrinsicInt: IntrinsicKind = IntrinsicKind(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct IntrinsicKind(pub i32);
pub const IntrinsicLong: IntrinsicKind = IntrinsicKind(6i32);
pub const IntrinsicUInt: IntrinsicKind = IntrinsicKind(5i32);
pub const IntrinsicULong: IntrinsicKind = IntrinsicKind(7i32);
pub const IntrinsicVoid: IntrinsicKind = IntrinsicKind(0i32);
pub const IntrinsicWChar: IntrinsicKind = IntrinsicKind(3i32);
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub type KDEXTS_LOCK_CALLBACKROUTINE = Option<unsafe extern "system" fn(plock: *mut KDEXTS_LOCK_INFO, context: *mut core::ffi::c_void) -> windows_core::HRESULT>;
pub const KDEXTS_LOCK_CALLBACKROUTINE_DEFINED: u32 = 2u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct KDEXTS_LOCK_INFO {
    pub SizeOfStruct: u32,
    pub Address: u64,
    pub OwningThread: u64,
    pub ExclusiveOwned: windows_core::BOOL,
    pub NumOwners: u32,
    pub ContentionCount: u32,
    pub NumExclusiveWaiters: u32,
    pub NumSharedWaiters: u32,
    pub pOwnerThreads: *mut u64,
    pub pWaiterThreads: *mut u64,
}
impl Default for KDEXTS_LOCK_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub type KDEXT_DUMP_HANDLE_CALLBACK = Option<unsafe extern "system" fn(handleinfo: *const KDEXT_HANDLE_INFORMATION, flags: u32, context: *mut core::ffi::c_void) -> bool>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct KDEXT_FILELOCK_OWNER {
    pub Sizeofstruct: u32,
    pub FileObject: u64,
    pub OwnerThread: u64,
    pub WaitIrp: u64,
    pub DeviceObject: u64,
    pub BlockingDirver: [i8; 32],
}
impl Default for KDEXT_FILELOCK_OWNER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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: bool,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct KDEXT_PROCESS_FIND_PARAMS {
    pub SizeofStruct: u32,
    pub Pid: u32,
    pub Session: u32,
    pub ImageName: windows_core::PSTR,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct KDEXT_THREAD_FIND_PARAMS {
    pub SizeofStruct: u32,
    pub StackPointer: u64,
    pub Cid: u32,
    pub Thread: u64,
}
pub const KD_SECONDARY_VERSION_AMD64_CONTEXT: u32 = 2u32;
pub const KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_1: u32 = 0u32;
pub const KD_SECONDARY_VERSION_AMD64_OBSOLETE_CONTEXT_2: u32 = 1u32;
pub const KD_SECONDARY_VERSION_DEFAULT: u32 = 0u32;
pub const LanguageAssembly: LanguageKind = LanguageKind(3i32);
pub const LanguageC: LanguageKind = LanguageKind(1i32);
pub const LanguageCPP: LanguageKind = LanguageKind(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LanguageKind(pub i32);
pub const LanguageUnknown: LanguageKind = LanguageKind(0i32);
pub const LessSpecific: SignatureComparison = SignatureComparison(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct Location {
    pub HostDefined: u64,
    pub Offset: u64,
}
pub const LocationConstant: LocationKind = LocationKind(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LocationKind(pub i32);
pub const LocationMember: LocationKind = LocationKind(0i32);
pub const LocationNone: LocationKind = LocationKind(3i32);
pub const LocationStatic: LocationKind = LocationKind(1i32);
pub const MAX_STACK_IN_BYTES: u32 = 4096u32;
pub const MEMORY_READ_ERROR: u32 = 1u32;
pub const MODULE_ORDERS_LOADTIME: u32 = 268435456u32;
pub const MODULE_ORDERS_MASK: u32 = 4026531840u32;
pub const MODULE_ORDERS_MODULENAME: u32 = 536870912u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ModelObjectKind(pub i32);
pub const MoreSpecific: SignatureComparison = SignatureComparison(3i32);
pub const NO_TYPE: TANALYZE_RETURN = TANALYZE_RETURN(0i32);
pub const NT_STATUS_CODE: TANALYZE_RETURN = TANALYZE_RETURN(5i32);
pub const NULL_FIELD_NAME: u32 = 6u32;
pub const NULL_SYM_DUMP_PARAM: u32 = 5u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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: [i8; 64],
    pub FullName: [i8; 256],
    pub Language: [i8; 30],
    pub BuildVersion: [i8; 64],
    pub ServicePackString: [i8; 64],
}
impl Default for OS_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OS_INFO_0 {
    pub _bitfield: u32,
}
#[repr(C)]
#[derive(Clone, Copy)]
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: [i8; 30],
    pub OsString: [i8; 64],
    pub ServicePackString: [i8; 64],
}
impl Default for OS_INFO_v1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union OS_INFO_v1_0 {
    pub Version: OS_INFO_v1_0_0,
    pub Ver64: u64,
}
impl Default for OS_INFO_v1_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OS_INFO_v1_0_0 {
    pub Major: u32,
    pub Minor: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OS_INFO_v1_1 {
    pub _bitfield: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct OS_TYPE(pub i32);
pub const ObjectContext: ModelObjectKind = ModelObjectKind(1i32);
pub const ObjectError: ModelObjectKind = ModelObjectKind(6i32);
pub const ObjectIntrinsic: ModelObjectKind = ModelObjectKind(7i32);
pub const ObjectKeyReference: ModelObjectKind = ModelObjectKind(9i32);
pub const ObjectMethod: ModelObjectKind = ModelObjectKind(8i32);
pub const ObjectNoValue: ModelObjectKind = ModelObjectKind(5i32);
pub const ObjectPropertyAccessor: ModelObjectKind = ModelObjectKind(0i32);
pub const ObjectSynthetic: ModelObjectKind = ModelObjectKind(4i32);
pub const ObjectTargetObject: ModelObjectKind = ModelObjectKind(2i32);
pub const ObjectTargetObjectReference: ModelObjectKind = ModelObjectKind(3i32);
pub type PDEBUG_EXTENSION_CALL = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, args: windows_core::PCSTR) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_CANUNLOAD = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_INITIALIZE = Option<unsafe extern "system" fn(version: *mut u32, flags: *mut u32) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_KNOWN_STRUCT = Option<unsafe extern "system" fn(flags: u32, offset: u64, typename: windows_core::PCSTR, buffer: windows_core::PSTR, bufferchars: *mut u32) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_KNOWN_STRUCT_EX = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, flags: u32, offset: u64, typename: windows_core::PCSTR, buffer: windows_core::PSTR, bufferchars: *mut u32) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_NOTIFY = Option<unsafe extern "system" fn(notify: u32, argument: u64)>;
pub type PDEBUG_EXTENSION_PROVIDE_VALUE = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, flags: u32, name: windows_core::PCWSTR, value: *mut u64, typemodbase: *mut u64, typeid: *mut u32, typeflags: *mut u32) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_QUERY_VALUE_NAMES = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, flags: u32, buffer: windows_core::PWSTR, bufferchars: u32, bufferneeded: *mut u32) -> windows_core::HRESULT>;
pub type PDEBUG_EXTENSION_UNINITIALIZE = Option<unsafe extern "system" fn()>;
pub type PDEBUG_EXTENSION_UNLOAD = Option<unsafe extern "system" fn()>;
pub type PDEBUG_STACK_PROVIDER_BEGINTHREADSTACKRECONSTRUCTION = Option<unsafe extern "system" fn(streamtype: u32, minidumpstreambuffer: *const core::ffi::c_void, buffersize: u32) -> windows_core::HRESULT>;
pub type PDEBUG_STACK_PROVIDER_ENDTHREADSTACKRECONSTRUCTION = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
pub type PDEBUG_STACK_PROVIDER_FREESTACKSYMFRAMES = Option<unsafe extern "system" fn(stacksymframes: *const STACK_SYM_FRAME_INFO) -> windows_core::HRESULT>;
pub type PDEBUG_STACK_PROVIDER_RECONSTRUCTSTACK = 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>;
pub type PENUMERATE_HANDLES = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, process: u64, handletodump: u64, flags: u32, callback: KDEXT_DUMP_HANDLE_CALLBACK, context: *const core::ffi::c_void) -> windows_core::HRESULT>;
pub type PENUMERATE_HASH_TABLE = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, hashtable: u64, callback: EXTS_TABLE_ENTRY_CALLBACK, context: *mut core::ffi::c_void) -> windows_core::HRESULT>;
pub type PENUMERATE_JOB_PROCESSES = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, job: u64, callback: EXTS_JOB_PROCESS_CALLBACK, context: *const core::ffi::c_void) -> windows_core::HRESULT>;
pub type PENUMERATE_SYSTEM_LOCKS = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, flags: u32, callback: KDEXTS_LOCK_CALLBACKROUTINE, context: *mut core::ffi::c_void) -> windows_core::HRESULT>;
pub type PFIND_FILELOCK_OWNERINFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, pfilelockowner: *mut KDEXT_FILELOCK_OWNER) -> windows_core::HRESULT>;
pub type PFIND_MATCHING_PROCESS = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, processinfo: *const KDEXT_PROCESS_FIND_PARAMS, process: *mut u64) -> windows_core::HRESULT>;
pub type PFIND_MATCHING_THREAD = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, threadinfo: *mut KDEXT_THREAD_FIND_PARAMS) -> windows_core::HRESULT>;
pub type PGET_CPU_MICROCODE_VERSION = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, pcpumicrocodeversion: *mut DEBUG_CPU_MICROCODE_VERSION) -> windows_core::HRESULT>;
pub type PGET_CPU_PSPEED_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, pcpuspeedinfo: *mut DEBUG_CPU_SPEED_INFO) -> windows_core::HRESULT>;
pub type PGET_DEVICE_OBJECT_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, deviceobject: u64, pdevobjinfo: *mut DEBUG_DEVICE_OBJECT_INFO) -> windows_core::HRESULT>;
pub type PGET_DRIVER_OBJECT_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, driverobject: u64, pdrvobjinfo: *mut DEBUG_DRIVER_OBJECT_INFO) -> windows_core::HRESULT>;
pub type PGET_FULL_IMAGE_NAME = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, process: u64, fullimagename: *mut windows_core::PSTR) -> windows_core::HRESULT>;
pub type PGET_IRP_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, irp: u64, irpinfo: *mut DEBUG_IRP_INFO) -> windows_core::HRESULT>;
pub type PGET_PNP_TRIAGE_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, ppnptriageinfo: *mut DEBUG_PNP_TRIAGE_INFO) -> windows_core::HRESULT>;
pub type PGET_POOL_DATA = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, pool: u64, pooldata: *mut DEBUG_POOL_DATA) -> windows_core::HRESULT>;
pub type PGET_POOL_REGION = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, pool: u64, poolregion: *mut DEBUG_POOL_REGION) -> windows_core::HRESULT>;
pub type PGET_POOL_TAG_DESCRIPTION = Option<unsafe extern "system" fn(pooltag: u32, pdescription: *mut DEBUG_POOLTAG_DESCRIPTION) -> windows_core::HRESULT>;
pub type PGET_PROCESS_COMMIT = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, totalcommitcharge: *mut u64, numberofprocesses: *mut u32, commitdata: *mut *mut PROCESS_COMMIT_USAGE) -> windows_core::HRESULT>;
pub type PGET_SMBIOS_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, psmbiosinfo: *mut DEBUG_SMBIOS_INFO) -> windows_core::HRESULT>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct PHYSICAL {
    pub Address: u64,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl Default for PHYSICAL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PHYSICAL_TO_VIRTUAL {
    pub Status: u32,
    pub Size: u32,
    pub PdeAddress: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct PHYSICAL_WITH_FLAGS {
    pub Address: u64,
    pub BufLen: u32,
    pub Flags: u32,
    pub Buf: [u8; 1],
}
impl Default for PHYSICAL_WITH_FLAGS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const PHYS_FLAG_CACHED: u32 = 1u32;
pub const PHYS_FLAG_DEFAULT: u32 = 0u32;
pub const PHYS_FLAG_UNCACHED: u32 = 2u32;
pub const PHYS_FLAG_WRITE_COMBINED: u32 = 3u32;
pub type PKDEXTS_GET_PTE_INFO = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, IDebugClient>, r#virtual: u64, pteinfo: *mut KDEXTS_PTE_INFO) -> windows_core::HRESULT>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for POINTER_SEARCH_PHYSICAL {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PROCESSORINFO {
    pub Processor: u16,
    pub NumberProcessors: u16,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for PROCESS_COMMIT_USAGE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const PROCESS_END: TANALYZE_RETURN = TANALYZE_RETURN(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PROCESS_NAME_ENTRY {
    pub ProcessId: u32,
    pub NameOffset: u32,
    pub NameSize: u32,
    pub NextEntry: u32,
}
pub type PSYM_DUMP_FIELD_CALLBACK = Option<unsafe extern "system" fn(pfield: *mut FIELD_INFO, usercontext: *mut core::ffi::c_void) -> u32>;
pub const PTR_SEARCH_NO_SYMBOL_CHECK: u32 = 2147483648u32;
pub const PTR_SEARCH_PHYS_ALL_HITS: u32 = 1u32;
pub const PTR_SEARCH_PHYS_PTE: u32 = 2u32;
pub const PTR_SEARCH_PHYS_RANGE_CHECK_ONLY: u32 = 4u32;
pub const PTR_SEARCH_PHYS_SIZE_SHIFT: u32 = 3u32;
pub type PWINDBG_CHECK_CONTROL_C = Option<unsafe extern "system" fn() -> u32>;
pub type PWINDBG_CHECK_VERSION = Option<unsafe extern "system" fn() -> u32>;
pub type PWINDBG_DISASM = Option<unsafe extern "system" fn(lpoffset: *mut usize, lpbuffer: windows_core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
pub type PWINDBG_DISASM32 = Option<unsafe extern "system" fn(lpoffset: *mut u32, lpbuffer: windows_core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
pub type PWINDBG_DISASM64 = Option<unsafe extern "system" fn(lpoffset: *mut u64, lpbuffer: windows_core::PCSTR, fshoweffectiveaddress: u32) -> u32>;
pub type PWINDBG_EXTENSION_API_VERSION = Option<unsafe extern "system" fn() -> *mut EXT_API_VERSION>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT = Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS, majorversion: u16, minorversion: u16)>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT32 = Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS32, majorversion: u16, minorversion: u16)>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_EXTENSION_DLL_INIT64 = Option<unsafe extern "system" fn(lpextensionapis: *mut WINDBG_EXTENSION_APIS64, majorversion: u16, minorversion: u16)>;
pub type PWINDBG_EXTENSION_ROUTINE = 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)>;
pub type PWINDBG_EXTENSION_ROUTINE32 = 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)>;
pub type PWINDBG_EXTENSION_ROUTINE64 = 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)>;
pub type PWINDBG_GET_EXPRESSION = Option<unsafe extern "system" fn(lpexpression: windows_core::PCSTR) -> usize>;
pub type PWINDBG_GET_EXPRESSION32 = Option<unsafe extern "system" fn(lpexpression: windows_core::PCSTR) -> u32>;
pub type PWINDBG_GET_EXPRESSION64 = Option<unsafe extern "system" fn(lpexpression: windows_core::PCSTR) -> u64>;
pub type PWINDBG_GET_SYMBOL = Option<unsafe extern "system" fn(offset: *mut core::ffi::c_void, pchbuffer: windows_core::PCSTR, pdisplacement: *mut usize)>;
pub type PWINDBG_GET_SYMBOL32 = Option<unsafe extern "system" fn(offset: u32, pchbuffer: windows_core::PCSTR, pdisplacement: *mut u32)>;
pub type PWINDBG_GET_SYMBOL64 = Option<unsafe extern "system" fn(offset: u64, pchbuffer: windows_core::PCSTR, pdisplacement: *mut u64)>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_GET_THREAD_CONTEXT_ROUTINE = Option<unsafe extern "system" fn(processor: u32, lpcontext: *mut super::CONTEXT, cbsizeofcontext: u32) -> u32>;
pub type PWINDBG_IOCTL_ROUTINE = Option<unsafe extern "system" fn(ioctltype: u16, lpvdata: *mut core::ffi::c_void, cbsize: u32) -> u32>;
pub type PWINDBG_OLDKD_EXTENSION_ROUTINE = Option<unsafe extern "system" fn(dwcurrentpc: u32, lpextensionapis: *mut WINDBG_OLDKD_EXTENSION_APIS, lpargumentstring: windows_core::PCSTR)>;
pub type PWINDBG_OLDKD_READ_PHYSICAL_MEMORY = Option<unsafe extern "system" fn(address: u64, buffer: *mut core::ffi::c_void, count: u32, bytesread: *mut u32) -> u32>;
pub type PWINDBG_OLDKD_WRITE_PHYSICAL_MEMORY = Option<unsafe extern "system" fn(address: u64, buffer: *mut core::ffi::c_void, length: u32, byteswritten: *mut u32) -> u32>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_OLD_EXTENSION_ROUTINE = Option<unsafe extern "system" fn(dwcurrentpc: u32, lpextensionapis: *mut WINDBG_EXTENSION_APIS, lpargumentstring: windows_core::PCSTR)>;
pub type PWINDBG_OUTPUT_ROUTINE = Option<unsafe extern "system" fn(lpformat: windows_core::PCSTR)>;
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE = Option<unsafe extern "system" fn(offset: usize, lpbuffer: *mut core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE32 = Option<unsafe extern "system" fn(offset: u32, lpbuffer: *mut core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
pub type PWINDBG_READ_PROCESS_MEMORY_ROUTINE64 = Option<unsafe extern "system" fn(offset: u64, lpbuffer: *mut core::ffi::c_void, cb: u32, lpcbbytesread: *mut u32) -> u32>;
#[cfg(feature = "Win32_System_Kernel")]
pub type PWINDBG_SET_THREAD_CONTEXT_ROUTINE = Option<unsafe extern "system" fn(processor: u32, lpcontext: *mut super::CONTEXT, cbsizeofcontext: u32) -> u32>;
pub type PWINDBG_STACKTRACE_ROUTINE = Option<unsafe extern "system" fn(framepointer: u32, stackpointer: u32, programcounter: u32, stackframes: *mut EXTSTACKTRACE, frames: u32) -> u32>;
pub type PWINDBG_STACKTRACE_ROUTINE32 = Option<unsafe extern "system" fn(framepointer: u32, stackpointer: u32, programcounter: u32, stackframes: *mut EXTSTACKTRACE32, frames: u32) -> u32>;
pub type PWINDBG_STACKTRACE_ROUTINE64 = Option<unsafe extern "system" fn(framepointer: u64, stackpointer: u64, programcounter: u64, stackframes: *mut EXTSTACKTRACE64, frames: u32) -> u32>;
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE = Option<unsafe extern "system" fn(offset: usize, lpbuffer: *const core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE32 = Option<unsafe extern "system" fn(offset: u32, lpbuffer: *const core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
pub type PWINDBG_WRITE_PROCESS_MEMORY_ROUTINE64 = Option<unsafe extern "system" fn(offset: u64, lpbuffer: *const core::ffi::c_void, cb: u32, lpcbbyteswritten: *mut u32) -> u32>;
pub const PointerCXHat: PointerKind = PointerKind(3i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PointerKind(pub i32);
pub const PointerManagedReference: PointerKind = PointerKind(4i32);
pub const PointerRValueReference: PointerKind = PointerKind(2i32);
pub const PointerReference: PointerKind = PointerKind(1i32);
pub const PointerStandard: PointerKind = PointerKind(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PreferredFormat(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct READCONTROLSPACE {
    pub Processor: u16,
    pub Address: u32,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl Default for READCONTROLSPACE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct READCONTROLSPACE32 {
    pub Processor: u16,
    pub Address: u32,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl Default for READCONTROLSPACE32 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct READCONTROLSPACE64 {
    pub Processor: u16,
    pub Address: u64,
    pub BufLen: u32,
    pub Buf: [u8; 1],
}
impl Default for READCONTROLSPACE64 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct READ_WRITE_MSR {
    pub Msr: u32,
    pub Value: i64,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct RawSearchFlags(pub i32);
pub const RawSearchNoBases: RawSearchFlags = RawSearchFlags(1i32);
pub const RawSearchNone: RawSearchFlags = RawSearchFlags(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SEARCHMEMORY {
    pub SearchAddress: u64,
    pub SearchLength: u64,
    pub FoundAddress: u64,
    pub PatternLength: u32,
    pub Pattern: *mut core::ffi::c_void,
}
impl Default for SEARCHMEMORY {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const STACK_FRAME_TYPE_IGNORE: u32 = 255u32;
pub const STACK_FRAME_TYPE_INIT: u32 = 0u32;
pub const STACK_FRAME_TYPE_INLINE: u32 = 2u32;
pub const STACK_FRAME_TYPE_RA: u32 = 128u32;
pub const STACK_FRAME_TYPE_STACK: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct STACK_SYM_FRAME_INFO {
    pub StackFrameEx: DEBUG_STACK_FRAME_EX,
    pub SrcInfo: STACK_SRC_INFO,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for SYMBOL_INFO_EX {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SYMBOL_TYPE_INDEX_NOT_FOUND: u32 = 2u32;
pub const SYMBOL_TYPE_INFO_NOT_FOUND: u32 = 3u32;
#[repr(C)]
#[derive(Clone, Copy)]
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 Default for SYM_DUMP_PARAM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union SYM_DUMP_PARAM_0 {
    pub Context: *mut core::ffi::c_void,
    pub pBuffer: *mut core::ffi::c_void,
}
impl Default for SYM_DUMP_PARAM_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ScriptChangeKind(pub i32);
pub const ScriptDebugAsyncBreak: ScriptDebugEvent = ScriptDebugEvent(3i32);
pub const ScriptDebugBreak: ScriptDebugState = ScriptDebugState(3i32);
pub const ScriptDebugBreakpoint: ScriptDebugEvent = ScriptDebugEvent(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ScriptDebugEvent(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ScriptDebugEventFilter(pub i32);
pub const ScriptDebugEventFilterAbort: ScriptDebugEventFilter = ScriptDebugEventFilter(3i32);
pub const ScriptDebugEventFilterEntry: ScriptDebugEventFilter = ScriptDebugEventFilter(0i32);
pub const ScriptDebugEventFilterException: ScriptDebugEventFilter = ScriptDebugEventFilter(1i32);
pub const ScriptDebugEventFilterUnhandledException: ScriptDebugEventFilter = ScriptDebugEventFilter(2i32);
#[repr(C)]
#[derive(Clone, Copy)]
pub struct ScriptDebugEventInformation {
    pub DebugEvent: ScriptDebugEvent,
    pub EventPosition: ScriptDebugPosition,
    pub EventSpanEnd: ScriptDebugPosition,
    pub u: ScriptDebugEventInformation_0,
}
impl Default for ScriptDebugEventInformation {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union ScriptDebugEventInformation_0 {
    pub ExceptionInformation: ScriptDebugEventInformation_0_0,
    pub BreakpointInformation: ScriptDebugEventInformation_0_1,
}
impl Default for ScriptDebugEventInformation_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ScriptDebugEventInformation_0_1 {
    pub BreakpointId: u64,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ScriptDebugEventInformation_0_0 {
    pub IsUncaught: u8,
}
pub const ScriptDebugException: ScriptDebugEvent = ScriptDebugEvent(2i32);
pub const ScriptDebugExecuting: ScriptDebugState = ScriptDebugState(2i32);
pub const ScriptDebugNoDebugger: ScriptDebugState = ScriptDebugState(0i32);
pub const ScriptDebugNotExecuting: ScriptDebugState = ScriptDebugState(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ScriptDebugPosition {
    pub Line: u32,
    pub Column: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ScriptDebugState(pub i32);
pub const ScriptDebugStep: ScriptDebugEvent = ScriptDebugEvent(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ScriptExecutionKind(pub i32);
pub const ScriptExecutionNormal: ScriptExecutionKind = ScriptExecutionKind(0i32);
pub const ScriptExecutionStepIn: ScriptExecutionKind = ScriptExecutionKind(1i32);
pub const ScriptExecutionStepOut: ScriptExecutionKind = ScriptExecutionKind(2i32);
pub const ScriptExecutionStepOver: ScriptExecutionKind = ScriptExecutionKind(3i32);
pub const ScriptRename: ScriptChangeKind = ScriptChangeKind(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SignatureComparison(pub i32);
pub const Symbol: SymbolKind = SymbolKind(0i32);
pub const SymbolBaseClass: SymbolKind = SymbolKind(6i32);
pub const SymbolConstant: SymbolKind = SymbolKind(4i32);
pub const SymbolData: SymbolKind = SymbolKind(5i32);
pub const SymbolField: SymbolKind = SymbolKind(3i32);
pub const SymbolFunction: SymbolKind = SymbolKind(8i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SymbolKind(pub i32);
pub const SymbolModule: SymbolKind = SymbolKind(1i32);
pub const SymbolPublic: SymbolKind = SymbolKind(7i32);
pub const SymbolSearchCaseInsensitive: SymbolSearchOptions = SymbolSearchOptions(2i32);
pub const SymbolSearchCompletion: SymbolSearchOptions = SymbolSearchOptions(1i32);
pub const SymbolSearchNone: SymbolSearchOptions = SymbolSearchOptions(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SymbolSearchOptions(pub i32);
pub const SymbolType: SymbolKind = SymbolKind(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TANALYZE_RETURN(pub i32);
#[repr(C)]
#[derive(Clone, Copy)]
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: [i8; 260],
}
impl Default for TARGET_DEBUG_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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: [i8; 260],
    pub FailureData: *mut core::ffi::c_void,
    pub StackTr: [i8; 4096],
}
impl Default for TARGET_DEBUG_INFO_v1 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy)]
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: [i8; 260],
}
impl Default for TARGET_DEBUG_INFO_v2 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct TRANSLATE_VIRTUAL_TO_PHYSICAL {
    pub Virtual: u64,
    pub Physical: u64,
}
pub const TRIAGE_FOLLOWUP_DEFAULT: u32 = 2u32;
pub const TRIAGE_FOLLOWUP_FAIL: u32 = 0u32;
pub const TRIAGE_FOLLOWUP_IGNORE: u32 = 1u32;
pub const TRIAGE_FOLLOWUP_SUCCESS: u32 = 3u32;
pub const TypeArray: TypeKind = TypeKind(3i32);
pub const TypeEnum: TypeKind = TypeKind(6i32);
pub const TypeExtendedArray: TypeKind = TypeKind(8i32);
pub const TypeFunction: TypeKind = TypeKind(4i32);
pub const TypeIntrinsic: TypeKind = TypeKind(7i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TypeKind(pub i32);
pub const TypeMemberPointer: TypeKind = TypeKind(2i32);
pub const TypePointer: TypeKind = TypeKind(1i32);
pub const TypeTypedef: TypeKind = TypeKind(5i32);
pub const TypeUDT: TypeKind = TypeKind(0i32);
pub const UNAVAILABLE_ERROR: u32 = 12u32;
pub const Unrelated: SignatureComparison = SignatureComparison(0i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct VIRTUAL_TO_PHYSICAL {
    pub Status: u32,
    pub Size: u32,
    pub PdeAddress: u64,
    pub Virtual: u64,
    pub Physical: u64,
}
pub const VarArgsCStyle: VarArgsKind = VarArgsKind(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct VarArgsKind(pub i32);
pub const VarArgsNone: VarArgsKind = VarArgsKind(0i32);
pub const WDBGEXTS_ADDRESS_DEFAULT: u32 = 0u32;
pub const WDBGEXTS_ADDRESS_RESERVED0: u32 = 2147483648u32;
pub const WDBGEXTS_ADDRESS_SEG16: u32 = 1u32;
pub const WDBGEXTS_ADDRESS_SEG32: u32 = 2u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct WDBGEXTS_CLR_DATA_INTERFACE {
    pub Iid: *const windows_core::GUID,
    pub Iface: *mut core::ffi::c_void,
}
impl Default for WDBGEXTS_CLR_DATA_INTERFACE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
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 Default for WDBGEXTS_DISASSEMBLE_BUFFER {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct WDBGEXTS_MODULE_IN_RANGE {
    pub Start: u64,
    pub End: u64,
    pub FoundModBase: u64,
    pub FoundModSize: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct WDBGEXTS_QUERY_INTERFACE {
    pub Iid: *const windows_core::GUID,
    pub Iface: *mut core::ffi::c_void,
}
impl Default for WDBGEXTS_QUERY_INTERFACE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[cfg(feature = "Win32_System_Kernel")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
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,
}
pub const WIN_95: OS_TYPE = OS_TYPE(0i32);
pub const WIN_98: OS_TYPE = OS_TYPE(1i32);
pub const WIN_ME: OS_TYPE = OS_TYPE(2i32);
pub const WIN_NT4: OS_TYPE = OS_TYPE(3i32);
pub const WIN_NT5: OS_TYPE = OS_TYPE(4i32);
pub const WIN_NT5_1: OS_TYPE = OS_TYPE(5i32);
pub const WIN_NT5_2: OS_TYPE = OS_TYPE(6i32);
pub const WIN_NT6_0: OS_TYPE = OS_TYPE(7i32);
pub const WIN_NT6_1: OS_TYPE = OS_TYPE(8i32);
pub const WIN_UNDEFINED: OS_TYPE = OS_TYPE(255i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct XML_DRIVER_NODE_INFO {
    pub FileName: [i8; 64],
    pub FileSize: u64,
    pub CreationDate: u64,
    pub Version: [i8; 64],
    pub Manufacturer: [i8; 260],
    pub ProductName: [i8; 260],
    pub Group: [i8; 260],
    pub Altitude: [i8; 260],
}
impl Default for XML_DRIVER_NODE_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const _EXTSAPI_VER_: u32 = 10u32;
pub type fnDebugFailureAnalysisCreateInstance = Option<unsafe extern "system" fn(client: windows_core::Ref<'_, 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>;
