//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (183)
//--------------------------------------------------------------------------------
pub const MAX_COUNTER_PATH = @as(u32, 256);
pub const PDH_MAX_COUNTER_NAME = @as(u32, 1024);
pub const PDH_MAX_INSTANCE_NAME = @as(u32, 1024);
pub const PDH_MAX_COUNTER_PATH = @as(u32, 2048);
pub const PDH_MAX_DATASOURCE_PATH = @as(u32, 1024);
pub const H_WBEM_DATASOURCE = @as(i32, -1);
pub const PDH_MAX_SCALE = @as(i32, 7);
pub const PDH_MIN_SCALE = @as(i32, -7);
pub const PDH_NOEXPANDCOUNTERS = @as(u32, 1);
pub const PDH_NOEXPANDINSTANCES = @as(u32, 2);
pub const PDH_REFRESHCOUNTERS = @as(u32, 4);
pub const PDH_LOG_TYPE_RETIRED_BIN = @as(u32, 3);
pub const PDH_LOG_TYPE_TRACE_KERNEL = @as(u32, 4);
pub const PDH_LOG_TYPE_TRACE_GENERIC = @as(u32, 5);
pub const PERF_PROVIDER_USER_MODE = @as(u32, 0);
pub const PERF_PROVIDER_KERNEL_MODE = @as(u32, 1);
pub const PERF_PROVIDER_DRIVER = @as(u32, 2);
pub const PERF_COUNTERSET_FLAG_MULTIPLE = @as(u32, 2);
pub const PERF_COUNTERSET_FLAG_AGGREGATE = @as(u32, 4);
pub const PERF_COUNTERSET_FLAG_HISTORY = @as(u32, 8);
pub const PERF_COUNTERSET_FLAG_INSTANCE = @as(u32, 16);
pub const PERF_COUNTERSET_SINGLE_INSTANCE = @as(u32, 0);
pub const PERF_COUNTERSET_MULTI_INSTANCES = @as(u32, 2);
pub const PERF_COUNTERSET_SINGLE_AGGREGATE = @as(u32, 4);
pub const PERF_AGGREGATE_MAX = @as(u32, 4);
pub const PERF_ATTRIB_BY_REFERENCE = @as(u64, 1);
pub const PERF_ATTRIB_NO_DISPLAYABLE = @as(u64, 2);
pub const PERF_ATTRIB_NO_GROUP_SEPARATOR = @as(u64, 4);
pub const PERF_ATTRIB_DISPLAY_AS_REAL = @as(u64, 8);
pub const PERF_ATTRIB_DISPLAY_AS_HEX = @as(u64, 16);
pub const PERF_WILDCARD_COUNTER = @as(u32, 4294967295);
pub const PERF_MAX_INSTANCE_NAME = @as(u32, 1024);
pub const PERF_ADD_COUNTER = @as(u32, 1);
pub const PERF_REMOVE_COUNTER = @as(u32, 2);
pub const PERF_ENUM_INSTANCES = @as(u32, 3);
pub const PERF_COLLECT_START = @as(u32, 5);
pub const PERF_COLLECT_END = @as(u32, 6);
pub const PERF_FILTER = @as(u32, 9);
pub const PERF_DATA_VERSION = @as(u32, 1);
pub const PERF_DATA_REVISION = @as(u32, 1);
pub const PERF_NO_INSTANCES = @as(i32, -1);
pub const PERF_METADATA_MULTIPLE_INSTANCES = @as(i32, -2);
pub const PERF_METADATA_NO_INSTANCES = @as(i32, -3);
pub const PERF_SIZE_DWORD = @as(u32, 0);
pub const PERF_SIZE_LARGE = @as(u32, 256);
pub const PERF_SIZE_ZERO = @as(u32, 512);
pub const PERF_SIZE_VARIABLE_LEN = @as(u32, 768);
pub const PERF_TYPE_NUMBER = @as(u32, 0);
pub const PERF_TYPE_COUNTER = @as(u32, 1024);
pub const PERF_TYPE_TEXT = @as(u32, 2048);
pub const PERF_TYPE_ZERO = @as(u32, 3072);
pub const PERF_NUMBER_HEX = @as(u32, 0);
pub const PERF_NUMBER_DECIMAL = @as(u32, 65536);
pub const PERF_NUMBER_DEC_1000 = @as(u32, 131072);
pub const PERF_COUNTER_VALUE = @as(u32, 0);
pub const PERF_COUNTER_RATE = @as(u32, 65536);
pub const PERF_COUNTER_FRACTION = @as(u32, 131072);
pub const PERF_COUNTER_BASE = @as(u32, 196608);
pub const PERF_COUNTER_ELAPSED = @as(u32, 262144);
pub const PERF_COUNTER_QUEUELEN = @as(u32, 327680);
pub const PERF_COUNTER_HISTOGRAM = @as(u32, 393216);
pub const PERF_COUNTER_PRECISION = @as(u32, 458752);
pub const PERF_TEXT_UNICODE = @as(u32, 0);
pub const PERF_TEXT_ASCII = @as(u32, 65536);
pub const PERF_TIMER_TICK = @as(u32, 0);
pub const PERF_TIMER_100NS = @as(u32, 1048576);
pub const PERF_OBJECT_TIMER = @as(u32, 2097152);
pub const PERF_DELTA_COUNTER = @as(u32, 4194304);
pub const PERF_DELTA_BASE = @as(u32, 8388608);
pub const PERF_INVERSE_COUNTER = @as(u32, 16777216);
pub const PERF_MULTI_COUNTER = @as(u32, 33554432);
pub const PERF_DISPLAY_NO_SUFFIX = @as(u32, 0);
pub const PERF_DISPLAY_PER_SEC = @as(u32, 268435456);
pub const PERF_DISPLAY_PERCENT = @as(u32, 536870912);
pub const PERF_DISPLAY_SECONDS = @as(u32, 805306368);
pub const PERF_DISPLAY_NOSHOW = @as(u32, 1073741824);
pub const PERF_COUNTER_HISTOGRAM_TYPE = @as(u32, 2147483648);
pub const PERF_NO_UNIQUE_ID = @as(i32, -1);
pub const MAX_PERF_OBJECTS_IN_QUERY_FUNCTION = @as(i32, 64);
pub const WINPERF_LOG_NONE = @as(u32, 0);
pub const WINPERF_LOG_USER = @as(u32, 1);
pub const WINPERF_LOG_DEBUG = @as(u32, 2);
pub const WINPERF_LOG_VERBOSE = @as(u32, 3);
pub const LIBID_SystemMonitor = Guid.initString("1b773e42-2509-11cf-942f-008029004347");
pub const DIID_DICounterItem = Guid.initString("c08c4ff2-0e2e-11cf-942c-008029004347");
pub const DIID_DILogFileItem = Guid.initString("8d093ffc-f777-4917-82d1-833fbc54c58f");
pub const DIID_DISystemMonitor = Guid.initString("13d73d81-c32e-11cf-9398-00aa00a3ddea");
pub const DIID_DISystemMonitorInternal = Guid.initString("194eb242-c32c-11cf-9398-00aa00a3ddea");
pub const DIID_DISystemMonitorEvents = Guid.initString("84979930-4ab3-11cf-943a-008029004347");
pub const PDH_CSTATUS_VALID_DATA = @as(i32, 0);
pub const PDH_CSTATUS_NEW_DATA = @as(i32, 1);
pub const PDH_CSTATUS_NO_MACHINE = @as(i32, -2147481648);
pub const PDH_CSTATUS_NO_INSTANCE = @as(i32, -2147481647);
pub const PDH_MORE_DATA = @as(i32, -2147481646);
pub const PDH_CSTATUS_ITEM_NOT_VALIDATED = @as(i32, -2147481645);
pub const PDH_RETRY = @as(i32, -2147481644);
pub const PDH_NO_DATA = @as(i32, -2147481643);
pub const PDH_CALC_NEGATIVE_DENOMINATOR = @as(i32, -2147481642);
pub const PDH_CALC_NEGATIVE_TIMEBASE = @as(i32, -2147481641);
pub const PDH_CALC_NEGATIVE_VALUE = @as(i32, -2147481640);
pub const PDH_DIALOG_CANCELLED = @as(i32, -2147481639);
pub const PDH_END_OF_LOG_FILE = @as(i32, -2147481638);
pub const PDH_ASYNC_QUERY_TIMEOUT = @as(i32, -2147481637);
pub const PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE = @as(i32, -2147481636);
pub const PDH_UNABLE_MAP_NAME_FILES = @as(i32, -2147480619);
pub const PDH_PLA_VALIDATION_WARNING = @as(i32, -2147480589);
pub const PDH_CSTATUS_NO_OBJECT = @as(i32, -1073738824);
pub const PDH_CSTATUS_NO_COUNTER = @as(i32, -1073738823);
pub const PDH_CSTATUS_INVALID_DATA = @as(i32, -1073738822);
pub const PDH_MEMORY_ALLOCATION_FAILURE = @as(i32, -1073738821);
pub const PDH_INVALID_HANDLE = @as(i32, -1073738820);
pub const PDH_INVALID_ARGUMENT = @as(i32, -1073738819);
pub const PDH_FUNCTION_NOT_FOUND = @as(i32, -1073738818);
pub const PDH_CSTATUS_NO_COUNTERNAME = @as(i32, -1073738817);
pub const PDH_CSTATUS_BAD_COUNTERNAME = @as(i32, -1073738816);
pub const PDH_INVALID_BUFFER = @as(i32, -1073738815);
pub const PDH_INSUFFICIENT_BUFFER = @as(i32, -1073738814);
pub const PDH_CANNOT_CONNECT_MACHINE = @as(i32, -1073738813);
pub const PDH_INVALID_PATH = @as(i32, -1073738812);
pub const PDH_INVALID_INSTANCE = @as(i32, -1073738811);
pub const PDH_INVALID_DATA = @as(i32, -1073738810);
pub const PDH_NO_DIALOG_DATA = @as(i32, -1073738809);
pub const PDH_CANNOT_READ_NAME_STRINGS = @as(i32, -1073738808);
pub const PDH_LOG_FILE_CREATE_ERROR = @as(i32, -1073738807);
pub const PDH_LOG_FILE_OPEN_ERROR = @as(i32, -1073738806);
pub const PDH_LOG_TYPE_NOT_FOUND = @as(i32, -1073738805);
pub const PDH_NO_MORE_DATA = @as(i32, -1073738804);
pub const PDH_ENTRY_NOT_IN_LOG_FILE = @as(i32, -1073738803);
pub const PDH_DATA_SOURCE_IS_LOG_FILE = @as(i32, -1073738802);
pub const PDH_DATA_SOURCE_IS_REAL_TIME = @as(i32, -1073738801);
pub const PDH_UNABLE_READ_LOG_HEADER = @as(i32, -1073738800);
pub const PDH_FILE_NOT_FOUND = @as(i32, -1073738799);
pub const PDH_FILE_ALREADY_EXISTS = @as(i32, -1073738798);
pub const PDH_NOT_IMPLEMENTED = @as(i32, -1073738797);
pub const PDH_STRING_NOT_FOUND = @as(i32, -1073738796);
pub const PDH_UNKNOWN_LOG_FORMAT = @as(i32, -1073738794);
pub const PDH_UNKNOWN_LOGSVC_COMMAND = @as(i32, -1073738793);
pub const PDH_LOGSVC_QUERY_NOT_FOUND = @as(i32, -1073738792);
pub const PDH_LOGSVC_NOT_OPENED = @as(i32, -1073738791);
pub const PDH_WBEM_ERROR = @as(i32, -1073738790);
pub const PDH_ACCESS_DENIED = @as(i32, -1073738789);
pub const PDH_LOG_FILE_TOO_SMALL = @as(i32, -1073738788);
pub const PDH_INVALID_DATASOURCE = @as(i32, -1073738787);
pub const PDH_INVALID_SQLDB = @as(i32, -1073738786);
pub const PDH_NO_COUNTERS = @as(i32, -1073738785);
pub const PDH_SQL_ALLOC_FAILED = @as(i32, -1073738784);
pub const PDH_SQL_ALLOCCON_FAILED = @as(i32, -1073738783);
pub const PDH_SQL_EXEC_DIRECT_FAILED = @as(i32, -1073738782);
pub const PDH_SQL_FETCH_FAILED = @as(i32, -1073738781);
pub const PDH_SQL_ROWCOUNT_FAILED = @as(i32, -1073738780);
pub const PDH_SQL_MORE_RESULTS_FAILED = @as(i32, -1073738779);
pub const PDH_SQL_CONNECT_FAILED = @as(i32, -1073738778);
pub const PDH_SQL_BIND_FAILED = @as(i32, -1073738777);
pub const PDH_CANNOT_CONNECT_WMI_SERVER = @as(i32, -1073738776);
pub const PDH_PLA_COLLECTION_ALREADY_RUNNING = @as(i32, -1073738775);
pub const PDH_PLA_ERROR_SCHEDULE_OVERLAP = @as(i32, -1073738774);
pub const PDH_PLA_COLLECTION_NOT_FOUND = @as(i32, -1073738773);
pub const PDH_PLA_ERROR_SCHEDULE_ELAPSED = @as(i32, -1073738772);
pub const PDH_PLA_ERROR_NOSTART = @as(i32, -1073738771);
pub const PDH_PLA_ERROR_ALREADY_EXISTS = @as(i32, -1073738770);
pub const PDH_PLA_ERROR_TYPE_MISMATCH = @as(i32, -1073738769);
pub const PDH_PLA_ERROR_FILEPATH = @as(i32, -1073738768);
pub const PDH_PLA_SERVICE_ERROR = @as(i32, -1073738767);
pub const PDH_PLA_VALIDATION_ERROR = @as(i32, -1073738766);
pub const PDH_PLA_ERROR_NAME_TOO_LONG = @as(i32, -1073738764);
pub const PDH_INVALID_SQL_LOG_FORMAT = @as(i32, -1073738763);
pub const PDH_COUNTER_ALREADY_IN_QUERY = @as(i32, -1073738762);
pub const PDH_BINARY_LOG_CORRUPT = @as(i32, -1073738761);
pub const PDH_LOG_SAMPLE_TOO_SMALL = @as(i32, -1073738760);
pub const PDH_OS_LATER_VERSION = @as(i32, -1073738759);
pub const PDH_OS_EARLIER_VERSION = @as(i32, -1073738758);
pub const PDH_INCORRECT_APPEND_TIME = @as(i32, -1073738757);
pub const PDH_UNMATCHED_APPEND_COUNTER = @as(i32, -1073738756);
pub const PDH_SQL_ALTER_DETAIL_FAILED = @as(i32, -1073738755);
pub const PDH_QUERY_PERF_DATA_TIMEOUT = @as(i32, -1073738754);
pub const PLA_CAPABILITY_LOCAL = @as(u32, 268435456);
pub const PLA_CAPABILITY_V1_SVC = @as(u32, 1);
pub const PLA_CAPABILITY_V1_SESSION = @as(u32, 2);
pub const PLA_CAPABILITY_V1_SYSTEM = @as(u32, 4);
pub const PLA_CAPABILITY_LEGACY_SESSION = @as(u32, 8);
pub const PLA_CAPABILITY_LEGACY_SVC = @as(u32, 16);
pub const PLA_CAPABILITY_AUTOLOGGER = @as(u32, 32);
pub const S_PDH = Guid.initString("04d66358-c4a1-419b-8023-23b73902de2c");

//--------------------------------------------------------------------------------
// Section: Types (144)
//--------------------------------------------------------------------------------
pub const PERF_DETAIL = enum(u32) {
    NOVICE = 100,
    ADVANCED = 200,
    EXPERT = 300,
    WIZARD = 400,
};
pub const PERF_DETAIL_NOVICE = PERF_DETAIL.NOVICE;
pub const PERF_DETAIL_ADVANCED = PERF_DETAIL.ADVANCED;
pub const PERF_DETAIL_EXPERT = PERF_DETAIL.EXPERT;
pub const PERF_DETAIL_WIZARD = PERF_DETAIL.WIZARD;

pub const REAL_TIME_DATA_SOURCE_ID_FLAGS = enum(u32) {
    REGISTRY = 1,
    WBEM = 4,
};
pub const DATA_SOURCE_REGISTRY = REAL_TIME_DATA_SOURCE_ID_FLAGS.REGISTRY;
pub const DATA_SOURCE_WBEM = REAL_TIME_DATA_SOURCE_ID_FLAGS.WBEM;

pub const PDH_PATH_FLAGS = enum(u32) {
    RESULT = 1,
    INPUT = 2,
    NONE = 0,
};
pub const PDH_PATH_WBEM_RESULT = PDH_PATH_FLAGS.RESULT;
pub const PDH_PATH_WBEM_INPUT = PDH_PATH_FLAGS.INPUT;
pub const PDH_PATH_WBEM_NONE = PDH_PATH_FLAGS.NONE;

pub const PDH_FMT = enum(u32) {
    DOUBLE = 512,
    LARGE = 1024,
    LONG = 256,
};
pub const PDH_FMT_DOUBLE = PDH_FMT.DOUBLE;
pub const PDH_FMT_LARGE = PDH_FMT.LARGE;
pub const PDH_FMT_LONG = PDH_FMT.LONG;

pub const PDH_LOG_TYPE = enum(u32) {
    UNDEFINED = 0,
    CSV = 1,
    SQL = 7,
    TSV = 2,
    BINARY = 8,
    PERFMON = 6,
};
pub const PDH_LOG_TYPE_UNDEFINED = PDH_LOG_TYPE.UNDEFINED;
pub const PDH_LOG_TYPE_CSV = PDH_LOG_TYPE.CSV;
pub const PDH_LOG_TYPE_SQL = PDH_LOG_TYPE.SQL;
pub const PDH_LOG_TYPE_TSV = PDH_LOG_TYPE.TSV;
pub const PDH_LOG_TYPE_BINARY = PDH_LOG_TYPE.BINARY;
pub const PDH_LOG_TYPE_PERFMON = PDH_LOG_TYPE.PERFMON;

pub const PDH_LOG = enum(u32) {
    READ_ACCESS = 65536,
    WRITE_ACCESS = 131072,
    UPDATE_ACCESS = 262144,
};
pub const PDH_LOG_READ_ACCESS = PDH_LOG.READ_ACCESS;
pub const PDH_LOG_WRITE_ACCESS = PDH_LOG.WRITE_ACCESS;
pub const PDH_LOG_UPDATE_ACCESS = PDH_LOG.UPDATE_ACCESS;

pub const PDH_SELECT_DATA_SOURCE_FLAGS = enum(u32) {
    FILE_BROWSER_ONLY = 1,
    NONE = 0,
};
pub const PDH_FLAGS_FILE_BROWSER_ONLY = PDH_SELECT_DATA_SOURCE_FLAGS.FILE_BROWSER_ONLY;
pub const PDH_FLAGS_NONE = PDH_SELECT_DATA_SOURCE_FLAGS.NONE;

pub const PDH_DLL_VERSION = enum(u32) {
    CVERSION_WIN50 = 1280,
    VERSION = 1283,
};
pub const PDH_CVERSION_WIN50 = PDH_DLL_VERSION.CVERSION_WIN50;
pub const PDH_VERSION = PDH_DLL_VERSION.VERSION;

pub const PERF_COUNTER_AGGREGATE_FUNC = enum(u32) {
    UNDEFINED = 0,
    TOTAL = 1,
    AVG = 2,
    MIN = 3,
};
pub const PERF_AGGREGATE_UNDEFINED = PERF_COUNTER_AGGREGATE_FUNC.UNDEFINED;
pub const PERF_AGGREGATE_TOTAL = PERF_COUNTER_AGGREGATE_FUNC.TOTAL;
pub const PERF_AGGREGATE_AVG = PERF_COUNTER_AGGREGATE_FUNC.AVG;
pub const PERF_AGGREGATE_MIN = PERF_COUNTER_AGGREGATE_FUNC.MIN;

// TODO: this type has a FreeFunc 'PerfStopProvider', what can Zig do with this information?
pub const PerfProviderHandle = isize;

// TODO: this type has a FreeFunc 'PerfCloseQueryHandle', what can Zig do with this information?
pub const PerfQueryHandle = isize;

const CLSID_DataCollectorSet_Value = Guid.initString("03837521-098b-11d8-9414-505054503030");
pub const CLSID_DataCollectorSet = &CLSID_DataCollectorSet_Value;

const CLSID_TraceSession_Value = Guid.initString("0383751c-098b-11d8-9414-505054503030");
pub const CLSID_TraceSession = &CLSID_TraceSession_Value;

const CLSID_TraceSessionCollection_Value = Guid.initString("03837530-098b-11d8-9414-505054503030");
pub const CLSID_TraceSessionCollection = &CLSID_TraceSessionCollection_Value;

const CLSID_TraceDataProvider_Value = Guid.initString("03837513-098b-11d8-9414-505054503030");
pub const CLSID_TraceDataProvider = &CLSID_TraceDataProvider_Value;

const CLSID_TraceDataProviderCollection_Value = Guid.initString("03837511-098b-11d8-9414-505054503030");
pub const CLSID_TraceDataProviderCollection = &CLSID_TraceDataProviderCollection_Value;

const CLSID_DataCollectorSetCollection_Value = Guid.initString("03837525-098b-11d8-9414-505054503030");
pub const CLSID_DataCollectorSetCollection = &CLSID_DataCollectorSetCollection_Value;

const CLSID_LegacyDataCollectorSet_Value = Guid.initString("03837526-098b-11d8-9414-505054503030");
pub const CLSID_LegacyDataCollectorSet = &CLSID_LegacyDataCollectorSet_Value;

const CLSID_LegacyDataCollectorSetCollection_Value = Guid.initString("03837527-098b-11d8-9414-505054503030");
pub const CLSID_LegacyDataCollectorSetCollection = &CLSID_LegacyDataCollectorSetCollection_Value;

const CLSID_LegacyTraceSession_Value = Guid.initString("03837528-098b-11d8-9414-505054503030");
pub const CLSID_LegacyTraceSession = &CLSID_LegacyTraceSession_Value;

const CLSID_LegacyTraceSessionCollection_Value = Guid.initString("03837529-098b-11d8-9414-505054503030");
pub const CLSID_LegacyTraceSessionCollection = &CLSID_LegacyTraceSessionCollection_Value;

const CLSID_ServerDataCollectorSet_Value = Guid.initString("03837531-098b-11d8-9414-505054503030");
pub const CLSID_ServerDataCollectorSet = &CLSID_ServerDataCollectorSet_Value;

const CLSID_ServerDataCollectorSetCollection_Value = Guid.initString("03837532-098b-11d8-9414-505054503030");
pub const CLSID_ServerDataCollectorSetCollection = &CLSID_ServerDataCollectorSetCollection_Value;

const CLSID_SystemDataCollectorSet_Value = Guid.initString("03837546-098b-11d8-9414-505054503030");
pub const CLSID_SystemDataCollectorSet = &CLSID_SystemDataCollectorSet_Value;

const CLSID_SystemDataCollectorSetCollection_Value = Guid.initString("03837547-098b-11d8-9414-505054503030");
pub const CLSID_SystemDataCollectorSetCollection = &CLSID_SystemDataCollectorSetCollection_Value;

const CLSID_BootTraceSession_Value = Guid.initString("03837538-098b-11d8-9414-505054503030");
pub const CLSID_BootTraceSession = &CLSID_BootTraceSession_Value;

const CLSID_BootTraceSessionCollection_Value = Guid.initString("03837539-098b-11d8-9414-505054503030");
pub const CLSID_BootTraceSessionCollection = &CLSID_BootTraceSessionCollection_Value;

pub const DataCollectorType = enum(i32) {
    PerformanceCounter = 0,
    Trace = 1,
    Configuration = 2,
    Alert = 3,
    ApiTrace = 4,
};
pub const plaPerformanceCounter = DataCollectorType.PerformanceCounter;
pub const plaTrace = DataCollectorType.Trace;
pub const plaConfiguration = DataCollectorType.Configuration;
pub const plaAlert = DataCollectorType.Alert;
pub const plaApiTrace = DataCollectorType.ApiTrace;

pub const FileFormat = enum(i32) {
    CommaSeparated = 0,
    TabSeparated = 1,
    Sql = 2,
    Binary = 3,
};
pub const plaCommaSeparated = FileFormat.CommaSeparated;
pub const plaTabSeparated = FileFormat.TabSeparated;
pub const plaSql = FileFormat.Sql;
pub const plaBinary = FileFormat.Binary;

pub const AutoPathFormat = enum(i32) {
    None = 0,
    Pattern = 1,
    Computer = 2,
    MonthDayHour = 256,
    SerialNumber = 512,
    YearDayOfYear = 1024,
    YearMonth = 2048,
    YearMonthDay = 4096,
    YearMonthDayHour = 8192,
    MonthDayHourMinute = 16384,
};
pub const plaNone = AutoPathFormat.None;
pub const plaPattern = AutoPathFormat.Pattern;
pub const plaComputer = AutoPathFormat.Computer;
pub const plaMonthDayHour = AutoPathFormat.MonthDayHour;
pub const plaSerialNumber = AutoPathFormat.SerialNumber;
pub const plaYearDayOfYear = AutoPathFormat.YearDayOfYear;
pub const plaYearMonth = AutoPathFormat.YearMonth;
pub const plaYearMonthDay = AutoPathFormat.YearMonthDay;
pub const plaYearMonthDayHour = AutoPathFormat.YearMonthDayHour;
pub const plaMonthDayHourMinute = AutoPathFormat.MonthDayHourMinute;

pub const DataCollectorSetStatus = enum(i32) {
    Stopped = 0,
    Running = 1,
    Compiling = 2,
    Pending = 3,
    Undefined = 4,
};
pub const plaStopped = DataCollectorSetStatus.Stopped;
pub const plaRunning = DataCollectorSetStatus.Running;
pub const plaCompiling = DataCollectorSetStatus.Compiling;
pub const plaPending = DataCollectorSetStatus.Pending;
pub const plaUndefined = DataCollectorSetStatus.Undefined;

pub const ClockType = enum(i32) {
    TimeStamp = 0,
    Performance = 1,
    System = 2,
    Cycle = 3,
};
pub const plaTimeStamp = ClockType.TimeStamp;
pub const plaPerformance = ClockType.Performance;
pub const plaSystem = ClockType.System;
pub const plaCycle = ClockType.Cycle;

pub const StreamMode = enum(i32) {
    File = 1,
    RealTime = 2,
    Both = 3,
    Buffering = 4,
};
pub const plaFile = StreamMode.File;
pub const plaRealTime = StreamMode.RealTime;
pub const plaBoth = StreamMode.Both;
pub const plaBuffering = StreamMode.Buffering;

pub const CommitMode = enum(i32) {
    CreateNew = 1,
    Modify = 2,
    CreateOrModify = 3,
    UpdateRunningInstance = 16,
    FlushTrace = 32,
    ValidateOnly = 4096,
};
pub const plaCreateNew = CommitMode.CreateNew;
pub const plaModify = CommitMode.Modify;
pub const plaCreateOrModify = CommitMode.CreateOrModify;
pub const plaUpdateRunningInstance = CommitMode.UpdateRunningInstance;
pub const plaFlushTrace = CommitMode.FlushTrace;
pub const plaValidateOnly = CommitMode.ValidateOnly;

pub const ValueMapType = enum(i32) {
    Index = 1,
    Flag = 2,
    FlagArray = 3,
    Validation = 4,
};
pub const plaIndex = ValueMapType.Index;
pub const plaFlag = ValueMapType.Flag;
pub const plaFlagArray = ValueMapType.FlagArray;
pub const plaValidation = ValueMapType.Validation;

pub const WeekDays = enum(i32) {
    RunOnce = 0,
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64,
    Everyday = 127,
};
pub const plaRunOnce = WeekDays.RunOnce;
pub const plaSunday = WeekDays.Sunday;
pub const plaMonday = WeekDays.Monday;
pub const plaTuesday = WeekDays.Tuesday;
pub const plaWednesday = WeekDays.Wednesday;
pub const plaThursday = WeekDays.Thursday;
pub const plaFriday = WeekDays.Friday;
pub const plaSaturday = WeekDays.Saturday;
pub const plaEveryday = WeekDays.Everyday;

pub const ResourcePolicy = enum(i32) {
    Largest = 0,
    Oldest = 1,
};
pub const plaDeleteLargest = ResourcePolicy.Largest;
pub const plaDeleteOldest = ResourcePolicy.Oldest;

pub const DataManagerSteps = enum(i32) {
    CreateReport = 1,
    RunRules = 2,
    CreateHtml = 4,
    FolderActions = 8,
    ResourceFreeing = 16,
};
pub const plaCreateReport = DataManagerSteps.CreateReport;
pub const plaRunRules = DataManagerSteps.RunRules;
pub const plaCreateHtml = DataManagerSteps.CreateHtml;
pub const plaFolderActions = DataManagerSteps.FolderActions;
pub const plaResourceFreeing = DataManagerSteps.ResourceFreeing;

pub const FolderActionSteps = enum(i32) {
    CreateCab = 1,
    DeleteData = 2,
    SendCab = 4,
    DeleteCab = 8,
    DeleteReport = 16,
};
pub const plaCreateCab = FolderActionSteps.CreateCab;
pub const plaDeleteData = FolderActionSteps.DeleteData;
pub const plaSendCab = FolderActionSteps.SendCab;
pub const plaDeleteCab = FolderActionSteps.DeleteCab;
pub const plaDeleteReport = FolderActionSteps.DeleteReport;

pub const PLA_CABEXTRACT_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FileName: ?[*:0]const u16,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        FileName: ?[*:0]const u16,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDataCollectorSet_Value = Guid.initString("03837520-098b-11d8-9414-505054503030");
pub const IID_IDataCollectorSet = &IID_IDataCollectorSet_Value;
pub const IDataCollectorSet = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataCollectors: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                collectors: ?*?*IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                collectors: ?*?*IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Duration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Duration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DescriptionUnresolved: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                Descr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                Descr: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                DisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                DisplayName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                DisplayName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                DisplayName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayNameUnresolved: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Keywords: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                keywords: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                keywords: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Keywords: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                keywords: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                keywords: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LatestOutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LatestOutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                path: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                path: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RootPath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                folder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                folder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RootPath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                folder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                folder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Segment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                segment: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                segment: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Segment: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                segment: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                segment: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SegmentMaxDuration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SegmentMaxDuration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SegmentMaxSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SegmentMaxSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                index: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                index: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SerialNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                index: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                index: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Server: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                server: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                server: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Status: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                status: ?*DataCollectorSetStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                status: ?*DataCollectorSetStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subdirectory: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                folder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                folder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Subdirectory: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                folder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                folder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubdirectoryFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                format: ?*AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                format: ?*AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SubdirectoryFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                format: AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                format: AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubdirectoryFormatPattern: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                pattern: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                pattern: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SubdirectoryFormatPattern: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                pattern: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                pattern: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Task: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Task: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskRunAsSelf: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                RunAsSelf: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                RunAsSelf: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskRunAsSelf: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                RunAsSelf: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                RunAsSelf: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskUserTextArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                UserText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                UserText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskUserTextArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                UserText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                UserText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Schedules: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                ppSchedules: ?*?*IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                ppSchedules: ?*?*IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SchedulesEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                enabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                enabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SchedulesEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                enabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                enabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UserAccount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                user: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                user: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Xml: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                xml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                xml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Security: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                pbstrSecurity: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                pbstrSecurity: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Security: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                bstrSecurity: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                bstrSecurity: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StopOnCompletion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                Stop: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                Stop: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_StopOnCompletion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                Stop: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                Stop: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataManager: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSet,
                DataManager: ?*?*IDataManager,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSet,
                DataManager: ?*?*IDataManager,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetCredentials: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                user: ?BSTR,
                password: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                user: ?BSTR,
                password: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Query: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                name: ?BSTR,
                server: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                name: ?BSTR,
                server: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Commit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                name: ?BSTR,
                server: ?BSTR,
                mode: CommitMode,
                validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                name: ?BSTR,
                server: ?BSTR,
                mode: CommitMode,
                validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Delete: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Start: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                Synchronous: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                Synchronous: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Stop: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                Synchronous: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                Synchronous: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetXml: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                xml: ?BSTR,
                validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                xml: ?BSTR,
                validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                key: ?BSTR,
                value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                key: ?BSTR,
                value: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSet,
                key: ?BSTR,
                value: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSet,
                key: ?BSTR,
                value: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_DataCollectors(self: *const T, collectors: ?*?*IDataCollectorCollection) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_DataCollectors(@as(*const IDataCollectorSet, @ptrCast(self)), collectors);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Duration(self: *const T, seconds: ?*u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Duration(@as(*const IDataCollectorSet, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Duration(self: *const T, seconds: u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Duration(@as(*const IDataCollectorSet, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Description(self: *const T, description: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Description(@as(*const IDataCollectorSet, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Description(self: *const T, description: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Description(@as(*const IDataCollectorSet, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_DescriptionUnresolved(self: *const T, Descr: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_DescriptionUnresolved(@as(*const IDataCollectorSet, @ptrCast(self)), Descr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_DisplayName(self: *const T, DisplayName: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_DisplayName(@as(*const IDataCollectorSet, @ptrCast(self)), DisplayName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_DisplayName(self: *const T, DisplayName: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_DisplayName(@as(*const IDataCollectorSet, @ptrCast(self)), DisplayName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_DisplayNameUnresolved(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_DisplayNameUnresolved(@as(*const IDataCollectorSet, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Keywords(self: *const T, keywords: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Keywords(@as(*const IDataCollectorSet, @ptrCast(self)), keywords);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Keywords(self: *const T, keywords: ?*SAFEARRAY) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Keywords(@as(*const IDataCollectorSet, @ptrCast(self)), keywords);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_LatestOutputLocation(self: *const T, path: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_LatestOutputLocation(@as(*const IDataCollectorSet, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_LatestOutputLocation(self: *const T, path: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_LatestOutputLocation(@as(*const IDataCollectorSet, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Name(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IDataCollectorSet, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_OutputLocation(self: *const T, path: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_OutputLocation(@as(*const IDataCollectorSet, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_RootPath(self: *const T, folder: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_RootPath(@as(*const IDataCollectorSet, @ptrCast(self)), folder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_RootPath(self: *const T, folder: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_RootPath(@as(*const IDataCollectorSet, @ptrCast(self)), folder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Segment(self: *const T, segment: ?*i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Segment(@as(*const IDataCollectorSet, @ptrCast(self)), segment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Segment(self: *const T, segment: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Segment(@as(*const IDataCollectorSet, @ptrCast(self)), segment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SegmentMaxDuration(self: *const T, seconds: ?*u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SegmentMaxDuration(@as(*const IDataCollectorSet, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SegmentMaxDuration(self: *const T, seconds: u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SegmentMaxDuration(@as(*const IDataCollectorSet, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SegmentMaxSize(self: *const T, size: ?*u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SegmentMaxSize(@as(*const IDataCollectorSet, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SegmentMaxSize(self: *const T, size: u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SegmentMaxSize(@as(*const IDataCollectorSet, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SerialNumber(self: *const T, index: ?*u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SerialNumber(@as(*const IDataCollectorSet, @ptrCast(self)), index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SerialNumber(self: *const T, index: u32) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SerialNumber(@as(*const IDataCollectorSet, @ptrCast(self)), index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Server(self: *const T, server: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Server(@as(*const IDataCollectorSet, @ptrCast(self)), server);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Status(self: *const T, status: ?*DataCollectorSetStatus) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IDataCollectorSet, @ptrCast(self)), status);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Subdirectory(self: *const T, folder: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Subdirectory(@as(*const IDataCollectorSet, @ptrCast(self)), folder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Subdirectory(self: *const T, folder: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Subdirectory(@as(*const IDataCollectorSet, @ptrCast(self)), folder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SubdirectoryFormat(self: *const T, format: ?*AutoPathFormat) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SubdirectoryFormat(@as(*const IDataCollectorSet, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SubdirectoryFormat(self: *const T, format: AutoPathFormat) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SubdirectoryFormat(@as(*const IDataCollectorSet, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SubdirectoryFormatPattern(self: *const T, pattern: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SubdirectoryFormatPattern(@as(*const IDataCollectorSet, @ptrCast(self)), pattern);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SubdirectoryFormatPattern(self: *const T, pattern: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SubdirectoryFormatPattern(@as(*const IDataCollectorSet, @ptrCast(self)), pattern);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Task(self: *const T, task: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Task(@as(*const IDataCollectorSet, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Task(self: *const T, task: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Task(@as(*const IDataCollectorSet, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_TaskRunAsSelf(self: *const T, RunAsSelf: ?*i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_TaskRunAsSelf(@as(*const IDataCollectorSet, @ptrCast(self)), RunAsSelf);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_TaskRunAsSelf(self: *const T, RunAsSelf: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_TaskRunAsSelf(@as(*const IDataCollectorSet, @ptrCast(self)), RunAsSelf);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_TaskArguments(self: *const T, task: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_TaskArguments(@as(*const IDataCollectorSet, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_TaskArguments(self: *const T, task: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_TaskArguments(@as(*const IDataCollectorSet, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_TaskUserTextArguments(self: *const T, UserText: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_TaskUserTextArguments(@as(*const IDataCollectorSet, @ptrCast(self)), UserText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_TaskUserTextArguments(self: *const T, UserText: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_TaskUserTextArguments(@as(*const IDataCollectorSet, @ptrCast(self)), UserText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Schedules(self: *const T, ppSchedules: ?*?*IScheduleCollection) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Schedules(@as(*const IDataCollectorSet, @ptrCast(self)), ppSchedules);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_SchedulesEnabled(self: *const T, enabled: ?*i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_SchedulesEnabled(@as(*const IDataCollectorSet, @ptrCast(self)), enabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_SchedulesEnabled(self: *const T, enabled: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_SchedulesEnabled(@as(*const IDataCollectorSet, @ptrCast(self)), enabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_UserAccount(self: *const T, user: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_UserAccount(@as(*const IDataCollectorSet, @ptrCast(self)), user);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Xml(self: *const T, xml: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Xml(@as(*const IDataCollectorSet, @ptrCast(self)), xml);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_Security(self: *const T, pbstrSecurity: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_Security(@as(*const IDataCollectorSet, @ptrCast(self)), pbstrSecurity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_Security(self: *const T, bstrSecurity: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_Security(@as(*const IDataCollectorSet, @ptrCast(self)), bstrSecurity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_StopOnCompletion(self: *const T, Stop: ?*i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_StopOnCompletion(@as(*const IDataCollectorSet, @ptrCast(self)), Stop);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_put_StopOnCompletion(self: *const T, Stop: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).put_StopOnCompletion(@as(*const IDataCollectorSet, @ptrCast(self)), Stop);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_get_DataManager(self: *const T, DataManager: ?*?*IDataManager) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).get_DataManager(@as(*const IDataCollectorSet, @ptrCast(self)), DataManager);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_SetCredentials(self: *const T, user: ?BSTR, password: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).SetCredentials(@as(*const IDataCollectorSet, @ptrCast(self)), user, password);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_Query(self: *const T, name: ?BSTR, server: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).Query(@as(*const IDataCollectorSet, @ptrCast(self)), name, server);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_Commit(self: *const T, name: ?BSTR, server: ?BSTR, mode: CommitMode, validation: ?*?*IValueMap) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).Commit(@as(*const IDataCollectorSet, @ptrCast(self)), name, server, mode, validation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_Delete(self: *const T) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).Delete(@as(*const IDataCollectorSet, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_Start(self: *const T, Synchronous: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).Start(@as(*const IDataCollectorSet, @ptrCast(self)), Synchronous);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_Stop(self: *const T, Synchronous: i16) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).Stop(@as(*const IDataCollectorSet, @ptrCast(self)), Synchronous);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_SetXml(self: *const T, xml: ?BSTR, validation: ?*?*IValueMap) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).SetXml(@as(*const IDataCollectorSet, @ptrCast(self)), xml, validation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_SetValue(self: *const T, key: ?BSTR, value: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).SetValue(@as(*const IDataCollectorSet, @ptrCast(self)), key, value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSet_GetValue(self: *const T, key: ?BSTR, value: ?*?BSTR) HRESULT {
                return @as(*const IDataCollectorSet.VTable, @ptrCast(self.vtable)).GetValue(@as(*const IDataCollectorSet, @ptrCast(self)), key, value);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDataManager_Value = Guid.initString("03837541-098b-11d8-9414-505054503030");
pub const IID_IDataManager = &IID_IDataManager_Value;
pub const IDataManager = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Enabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pfEnabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pfEnabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Enabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                fEnabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                fEnabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CheckBeforeRunning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pfCheck: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pfCheck: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CheckBeforeRunning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                fCheck: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                fCheck: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinFreeDisk: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                MinFreeDisk: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                MinFreeDisk: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MinFreeDisk: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                MinFreeDisk: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                MinFreeDisk: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaxSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pulMaxSize: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pulMaxSize: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MaxSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                ulMaxSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                ulMaxSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaxFolderCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pulMaxFolderCount: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pulMaxFolderCount: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MaxFolderCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                ulMaxFolderCount: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                ulMaxFolderCount: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ResourcePolicy: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pPolicy: ?*ResourcePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pPolicy: ?*ResourcePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ResourcePolicy: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                Policy: ResourcePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                Policy: ResourcePolicy,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FolderActions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                Actions: ?*?*IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                Actions: ?*?*IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReportSchema: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                ReportSchema: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                ReportSchema: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReportSchema: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                ReportSchema: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                ReportSchema: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReportFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pbstrFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pbstrFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReportFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pbstrFilename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pbstrFilename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RuleTargetFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                Filename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                Filename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RuleTargetFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                Filename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                Filename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EventsFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pbstrFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pbstrFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EventsFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pbstrFilename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pbstrFilename: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Rules: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                pbstrXml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                pbstrXml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Rules: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataManager,
                bstrXml: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataManager,
                bstrXml: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Run: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataManager,
                Steps: DataManagerSteps,
                bstrFolder: ?BSTR,
                Errors: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataManager,
                Steps: DataManagerSteps,
                bstrFolder: ?BSTR,
                Errors: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Extract: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataManager,
                CabFilename: ?BSTR,
                DestinationPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataManager,
                CabFilename: ?BSTR,
                DestinationPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_Enabled(self: *const T, pfEnabled: ?*i16) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_Enabled(@as(*const IDataManager, @ptrCast(self)), pfEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_Enabled(self: *const T, fEnabled: i16) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_Enabled(@as(*const IDataManager, @ptrCast(self)), fEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_CheckBeforeRunning(self: *const T, pfCheck: ?*i16) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_CheckBeforeRunning(@as(*const IDataManager, @ptrCast(self)), pfCheck);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_CheckBeforeRunning(self: *const T, fCheck: i16) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_CheckBeforeRunning(@as(*const IDataManager, @ptrCast(self)), fCheck);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_MinFreeDisk(self: *const T, MinFreeDisk: ?*u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_MinFreeDisk(@as(*const IDataManager, @ptrCast(self)), MinFreeDisk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_MinFreeDisk(self: *const T, MinFreeDisk: u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_MinFreeDisk(@as(*const IDataManager, @ptrCast(self)), MinFreeDisk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_MaxSize(self: *const T, pulMaxSize: ?*u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_MaxSize(@as(*const IDataManager, @ptrCast(self)), pulMaxSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_MaxSize(self: *const T, ulMaxSize: u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_MaxSize(@as(*const IDataManager, @ptrCast(self)), ulMaxSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_MaxFolderCount(self: *const T, pulMaxFolderCount: ?*u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_MaxFolderCount(@as(*const IDataManager, @ptrCast(self)), pulMaxFolderCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_MaxFolderCount(self: *const T, ulMaxFolderCount: u32) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_MaxFolderCount(@as(*const IDataManager, @ptrCast(self)), ulMaxFolderCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_ResourcePolicy(self: *const T, pPolicy: ?*ResourcePolicy) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_ResourcePolicy(@as(*const IDataManager, @ptrCast(self)), pPolicy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_ResourcePolicy(self: *const T, Policy: ResourcePolicy) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_ResourcePolicy(@as(*const IDataManager, @ptrCast(self)), Policy);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_FolderActions(self: *const T, Actions: ?*?*IFolderActionCollection) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_FolderActions(@as(*const IDataManager, @ptrCast(self)), Actions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_ReportSchema(self: *const T, ReportSchema: ?*?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_ReportSchema(@as(*const IDataManager, @ptrCast(self)), ReportSchema);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_ReportSchema(self: *const T, ReportSchema: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_ReportSchema(@as(*const IDataManager, @ptrCast(self)), ReportSchema);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_ReportFileName(self: *const T, pbstrFilename: ?*?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_ReportFileName(@as(*const IDataManager, @ptrCast(self)), pbstrFilename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_ReportFileName(self: *const T, pbstrFilename: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_ReportFileName(@as(*const IDataManager, @ptrCast(self)), pbstrFilename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_RuleTargetFileName(self: *const T, Filename: ?*?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_RuleTargetFileName(@as(*const IDataManager, @ptrCast(self)), Filename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_RuleTargetFileName(self: *const T, Filename: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_RuleTargetFileName(@as(*const IDataManager, @ptrCast(self)), Filename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_EventsFileName(self: *const T, pbstrFilename: ?*?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_EventsFileName(@as(*const IDataManager, @ptrCast(self)), pbstrFilename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_EventsFileName(self: *const T, pbstrFilename: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_EventsFileName(@as(*const IDataManager, @ptrCast(self)), pbstrFilename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_get_Rules(self: *const T, pbstrXml: ?*?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).get_Rules(@as(*const IDataManager, @ptrCast(self)), pbstrXml);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_put_Rules(self: *const T, bstrXml: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).put_Rules(@as(*const IDataManager, @ptrCast(self)), bstrXml);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_Run(self: *const T, Steps: DataManagerSteps, bstrFolder: ?BSTR, Errors: ?*?*IValueMap) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).Run(@as(*const IDataManager, @ptrCast(self)), Steps, bstrFolder, Errors);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataManager_Extract(self: *const T, CabFilename: ?BSTR, DestinationPath: ?BSTR) HRESULT {
                return @as(*const IDataManager.VTable, @ptrCast(self.vtable)).Extract(@as(*const IDataManager, @ptrCast(self)), CabFilename, DestinationPath);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFolderAction_Value = Guid.initString("03837543-098b-11d8-9414-505054503030");
pub const IID_IFolderAction = &IID_IFolderAction_Value;
pub const IFolderAction = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Age: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                pulAge: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                pulAge: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Age: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                ulAge: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                ulAge: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Size: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                pulAge: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                pulAge: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Size: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                ulAge: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                ulAge: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Actions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                Steps: ?*FolderActionSteps,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                Steps: ?*FolderActionSteps,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Actions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                Steps: FolderActionSteps,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                Steps: FolderActionSteps,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SendCabTo: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                pbstrDestination: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                pbstrDestination: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SendCabTo: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderAction,
                bstrDestination: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderAction,
                bstrDestination: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_get_Age(self: *const T, pulAge: ?*u32) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).get_Age(@as(*const IFolderAction, @ptrCast(self)), pulAge);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_put_Age(self: *const T, ulAge: u32) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).put_Age(@as(*const IFolderAction, @ptrCast(self)), ulAge);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_get_Size(self: *const T, pulAge: ?*u32) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFolderAction, @ptrCast(self)), pulAge);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_put_Size(self: *const T, ulAge: u32) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).put_Size(@as(*const IFolderAction, @ptrCast(self)), ulAge);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_get_Actions(self: *const T, Steps: ?*FolderActionSteps) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).get_Actions(@as(*const IFolderAction, @ptrCast(self)), Steps);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_put_Actions(self: *const T, Steps: FolderActionSteps) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).put_Actions(@as(*const IFolderAction, @ptrCast(self)), Steps);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_get_SendCabTo(self: *const T, pbstrDestination: ?*?BSTR) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).get_SendCabTo(@as(*const IFolderAction, @ptrCast(self)), pbstrDestination);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderAction_put_SendCabTo(self: *const T, bstrDestination: ?BSTR) HRESULT {
                return @as(*const IFolderAction.VTable, @ptrCast(self.vtable)).put_SendCabTo(@as(*const IFolderAction, @ptrCast(self)), bstrDestination);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFolderActionCollection_Value = Guid.initString("03837544-098b-11d8-9414-505054503030");
pub const IID_IFolderActionCollection = &IID_IFolderActionCollection_Value;
pub const IFolderActionCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderActionCollection,
                Count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Index: VARIANT,
                Action: ?*?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderActionCollection,
                Index: VARIANT,
                Action: ?*?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Enum: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFolderActionCollection,
                Enum: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Action: ?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFolderActionCollection,
                Action: ?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFolderActionCollection,
                Index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFolderActionCollection,
                Actions: ?*IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFolderActionCollection,
                Actions: ?*IFolderActionCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateFolderAction: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFolderActionCollection,
                FolderAction: ?*?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFolderActionCollection,
                FolderAction: ?*?*IFolderAction,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_get_Count(self: *const T, Count: ?*u32) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFolderActionCollection, @ptrCast(self)), Count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_get_Item(self: *const T, Index: VARIANT, Action: ?*?*IFolderAction) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFolderActionCollection, @ptrCast(self)), Index, Action);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_get__NewEnum(self: *const T, Enum: ?*?*IUnknown) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFolderActionCollection, @ptrCast(self)), Enum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_Add(self: *const T, Action: ?*IFolderAction) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).Add(@as(*const IFolderActionCollection, @ptrCast(self)), Action);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_Remove(self: *const T, Index: VARIANT) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).Remove(@as(*const IFolderActionCollection, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_Clear(self: *const T) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).Clear(@as(*const IFolderActionCollection, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_AddRange(self: *const T, Actions: ?*IFolderActionCollection) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IFolderActionCollection, @ptrCast(self)), Actions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFolderActionCollection_CreateFolderAction(self: *const T, FolderAction: ?*?*IFolderAction) HRESULT {
                return @as(*const IFolderActionCollection.VTable, @ptrCast(self.vtable)).CreateFolderAction(@as(*const IFolderActionCollection, @ptrCast(self)), FolderAction);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDataCollector_Value = Guid.initString("038374ff-098b-11d8-9414-505054503030");
pub const IID_IDataCollector = &IID_IDataCollector_Value;
pub const IDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataCollectorSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                group: ?*?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                group: ?*?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataCollectorSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                group: ?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                group: ?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataCollectorType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                type: ?*DataCollectorType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                type: ?*DataCollectorType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileNameFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                format: ?*AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                format: ?*AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileNameFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                format: AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                format: AutoPathFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileNameFormatPattern: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                pattern: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                pattern: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileNameFormatPattern: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                pattern: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                pattern: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LatestOutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LatestOutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                path: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                path: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogAppend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                append: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                append: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogAppend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                append: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                append: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogCircular: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                circular: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                circular: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogCircular: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                circular: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                circular: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogOverwrite: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                overwrite: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                overwrite: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogOverwrite: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                overwrite: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                overwrite: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Name: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutputLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                path: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Index: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                index: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                index: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Index: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                index: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Xml: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollector,
                Xml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollector,
                Xml: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetXml: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollector,
                Xml: ?BSTR,
                Validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollector,
                Xml: ?BSTR,
                Validation: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateOutputLocation: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollector,
                Latest: i16,
                Location: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollector,
                Latest: i16,
                Location: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_DataCollectorSet(self: *const T, group: ?*?*IDataCollectorSet) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_DataCollectorSet(@as(*const IDataCollector, @ptrCast(self)), group);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_DataCollectorSet(self: *const T, group: ?*IDataCollectorSet) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_DataCollectorSet(@as(*const IDataCollector, @ptrCast(self)), group);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_DataCollectorType(self: *const T, type_: ?*DataCollectorType) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_DataCollectorType(@as(*const IDataCollector, @ptrCast(self)), type_);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_FileName(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_FileName(@as(*const IDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_FileName(self: *const T, name: ?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_FileName(@as(*const IDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_FileNameFormat(self: *const T, format: ?*AutoPathFormat) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_FileNameFormat(@as(*const IDataCollector, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_FileNameFormat(self: *const T, format: AutoPathFormat) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_FileNameFormat(@as(*const IDataCollector, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_FileNameFormatPattern(self: *const T, pattern: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_FileNameFormatPattern(@as(*const IDataCollector, @ptrCast(self)), pattern);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_FileNameFormatPattern(self: *const T, pattern: ?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_FileNameFormatPattern(@as(*const IDataCollector, @ptrCast(self)), pattern);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_LatestOutputLocation(self: *const T, path: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_LatestOutputLocation(@as(*const IDataCollector, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_LatestOutputLocation(self: *const T, path: ?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_LatestOutputLocation(@as(*const IDataCollector, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_LogAppend(self: *const T, append: ?*i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_LogAppend(@as(*const IDataCollector, @ptrCast(self)), append);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_LogAppend(self: *const T, append: i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_LogAppend(@as(*const IDataCollector, @ptrCast(self)), append);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_LogCircular(self: *const T, circular: ?*i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_LogCircular(@as(*const IDataCollector, @ptrCast(self)), circular);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_LogCircular(self: *const T, circular: i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_LogCircular(@as(*const IDataCollector, @ptrCast(self)), circular);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_LogOverwrite(self: *const T, overwrite: ?*i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_LogOverwrite(@as(*const IDataCollector, @ptrCast(self)), overwrite);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_LogOverwrite(self: *const T, overwrite: i16) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_LogOverwrite(@as(*const IDataCollector, @ptrCast(self)), overwrite);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_Name(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_Name(self: *const T, name: ?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_Name(@as(*const IDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_OutputLocation(self: *const T, path: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_OutputLocation(@as(*const IDataCollector, @ptrCast(self)), path);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_Index(self: *const T, index: ?*i32) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_Index(@as(*const IDataCollector, @ptrCast(self)), index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_put_Index(self: *const T, index: i32) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).put_Index(@as(*const IDataCollector, @ptrCast(self)), index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_get_Xml(self: *const T, Xml: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).get_Xml(@as(*const IDataCollector, @ptrCast(self)), Xml);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_SetXml(self: *const T, Xml: ?BSTR, Validation: ?*?*IValueMap) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).SetXml(@as(*const IDataCollector, @ptrCast(self)), Xml, Validation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollector_CreateOutputLocation(self: *const T, Latest: i16, Location: ?*?BSTR) HRESULT {
                return @as(*const IDataCollector.VTable, @ptrCast(self.vtable)).CreateOutputLocation(@as(*const IDataCollector, @ptrCast(self)), Latest, Location);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IPerformanceCounterDataCollector_Value = Guid.initString("03837506-098b-11d8-9414-505054503030");
pub const IID_IPerformanceCounterDataCollector = &IID_IPerformanceCounterDataCollector_Value;
pub const IPerformanceCounterDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDataCollector.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataSourceName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                dsn: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                dsn: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataSourceName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                dsn: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                dsn: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PerformanceCounters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                counters: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                counters: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PerformanceCounters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                counters: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                counters: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFileFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                format: ?*FileFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                format: ?*FileFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogFileFormat: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                format: FileFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                format: FileFormat,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SampleInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                interval: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                interval: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SampleInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                interval: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                interval: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SegmentMaxRecords: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                records: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                records: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SegmentMaxRecords: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IPerformanceCounterDataCollector,
                records: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IPerformanceCounterDataCollector,
                records: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDataCollector.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_get_DataSourceName(self: *const T, dsn: ?*?BSTR) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).get_DataSourceName(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), dsn);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_put_DataSourceName(self: *const T, dsn: ?BSTR) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).put_DataSourceName(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), dsn);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_get_PerformanceCounters(self: *const T, counters: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).get_PerformanceCounters(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), counters);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_put_PerformanceCounters(self: *const T, counters: ?*SAFEARRAY) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).put_PerformanceCounters(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), counters);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_get_LogFileFormat(self: *const T, format: ?*FileFormat) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).get_LogFileFormat(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_put_LogFileFormat(self: *const T, format: FileFormat) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).put_LogFileFormat(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), format);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_get_SampleInterval(self: *const T, interval: ?*u32) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).get_SampleInterval(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), interval);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_put_SampleInterval(self: *const T, interval: u32) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).put_SampleInterval(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), interval);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_get_SegmentMaxRecords(self: *const T, records: ?*u32) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).get_SegmentMaxRecords(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), records);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IPerformanceCounterDataCollector_put_SegmentMaxRecords(self: *const T, records: u32) HRESULT {
                return @as(*const IPerformanceCounterDataCollector.VTable, @ptrCast(self.vtable)).put_SegmentMaxRecords(@as(*const IPerformanceCounterDataCollector, @ptrCast(self)), records);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ITraceDataCollector_Value = Guid.initString("0383750b-098b-11d8-9414-505054503030");
pub const IID_ITraceDataCollector = &IID_ITraceDataCollector_Value;
pub const ITraceDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDataCollector.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BufferSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BufferSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BuffersLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BuffersLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BuffersWritten: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BuffersWritten: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ClockType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                clock: ?*ClockType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                clock: ?*ClockType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ClockType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                clock: ClockType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                clock: ClockType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EventsLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                events: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                events: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EventsLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                events: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                events: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedModes: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                mode: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                mode: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ExtendedModes: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                mode: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                mode: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FlushTimer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                seconds: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FlushTimer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                seconds: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FreeBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FreeBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Guid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                guid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                guid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Guid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                guid: Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                guid: Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IsKernelTrace: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                kernel: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                kernel: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaximumBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MaximumBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinimumBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MinimumBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_NumberOfBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_NumberOfBuffers: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PreallocateFile: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                allocate: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                allocate: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PreallocateFile: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                allocate: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                allocate: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProcessMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                process: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                process: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ProcessMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                process: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                process: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RealTimeBuffersLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RealTimeBuffersLost: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                buffers: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SessionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                id: ?*u64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                id: ?*u64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SessionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                id: u64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                id: u64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SessionName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SessionName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SessionThreadId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                tid: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                tid: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SessionThreadId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                tid: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                tid: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StreamMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                mode: ?*StreamMode,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                mode: ?*StreamMode,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_StreamMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                mode: StreamMode,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                mode: StreamMode,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TraceDataProviders: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataCollector,
                providers: ?*?*ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataCollector,
                providers: ?*?*ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDataCollector.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_BufferSize(self: *const T, size: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_BufferSize(@as(*const ITraceDataCollector, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_BufferSize(self: *const T, size: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_BufferSize(@as(*const ITraceDataCollector, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_BuffersLost(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_BuffersLost(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_BuffersLost(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_BuffersLost(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_BuffersWritten(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_BuffersWritten(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_BuffersWritten(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_BuffersWritten(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_ClockType(self: *const T, clock: ?*ClockType) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_ClockType(@as(*const ITraceDataCollector, @ptrCast(self)), clock);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_ClockType(self: *const T, clock: ClockType) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_ClockType(@as(*const ITraceDataCollector, @ptrCast(self)), clock);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_EventsLost(self: *const T, events: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_EventsLost(@as(*const ITraceDataCollector, @ptrCast(self)), events);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_EventsLost(self: *const T, events: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_EventsLost(@as(*const ITraceDataCollector, @ptrCast(self)), events);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_ExtendedModes(self: *const T, mode: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_ExtendedModes(@as(*const ITraceDataCollector, @ptrCast(self)), mode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_ExtendedModes(self: *const T, mode: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_ExtendedModes(@as(*const ITraceDataCollector, @ptrCast(self)), mode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_FlushTimer(self: *const T, seconds: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_FlushTimer(@as(*const ITraceDataCollector, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_FlushTimer(self: *const T, seconds: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_FlushTimer(@as(*const ITraceDataCollector, @ptrCast(self)), seconds);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_FreeBuffers(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_FreeBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_FreeBuffers(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_FreeBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_Guid(self: *const T, guid: ?*Guid) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_Guid(@as(*const ITraceDataCollector, @ptrCast(self)), guid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_Guid(self: *const T, guid: Guid) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_Guid(@as(*const ITraceDataCollector, @ptrCast(self)), guid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_IsKernelTrace(self: *const T, kernel: ?*i16) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_IsKernelTrace(@as(*const ITraceDataCollector, @ptrCast(self)), kernel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_MaximumBuffers(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_MaximumBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_MaximumBuffers(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_MaximumBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_MinimumBuffers(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_MinimumBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_MinimumBuffers(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_MinimumBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_NumberOfBuffers(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_NumberOfBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_NumberOfBuffers(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_NumberOfBuffers(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_PreallocateFile(self: *const T, allocate: ?*i16) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_PreallocateFile(@as(*const ITraceDataCollector, @ptrCast(self)), allocate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_PreallocateFile(self: *const T, allocate: i16) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_PreallocateFile(@as(*const ITraceDataCollector, @ptrCast(self)), allocate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_ProcessMode(self: *const T, process: ?*i16) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_ProcessMode(@as(*const ITraceDataCollector, @ptrCast(self)), process);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_ProcessMode(self: *const T, process: i16) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_ProcessMode(@as(*const ITraceDataCollector, @ptrCast(self)), process);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_RealTimeBuffersLost(self: *const T, buffers: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_RealTimeBuffersLost(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_RealTimeBuffersLost(self: *const T, buffers: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_RealTimeBuffersLost(@as(*const ITraceDataCollector, @ptrCast(self)), buffers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_SessionId(self: *const T, id: ?*u64) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_SessionId(@as(*const ITraceDataCollector, @ptrCast(self)), id);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_SessionId(self: *const T, id: u64) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_SessionId(@as(*const ITraceDataCollector, @ptrCast(self)), id);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_SessionName(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_SessionName(@as(*const ITraceDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_SessionName(self: *const T, name: ?BSTR) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_SessionName(@as(*const ITraceDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_SessionThreadId(self: *const T, tid: ?*u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_SessionThreadId(@as(*const ITraceDataCollector, @ptrCast(self)), tid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_SessionThreadId(self: *const T, tid: u32) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_SessionThreadId(@as(*const ITraceDataCollector, @ptrCast(self)), tid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_StreamMode(self: *const T, mode: ?*StreamMode) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_StreamMode(@as(*const ITraceDataCollector, @ptrCast(self)), mode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_put_StreamMode(self: *const T, mode: StreamMode) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).put_StreamMode(@as(*const ITraceDataCollector, @ptrCast(self)), mode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataCollector_get_TraceDataProviders(self: *const T, providers: ?*?*ITraceDataProviderCollection) HRESULT {
                return @as(*const ITraceDataCollector.VTable, @ptrCast(self.vtable)).get_TraceDataProviders(@as(*const ITraceDataCollector, @ptrCast(self)), providers);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IConfigurationDataCollector_Value = Guid.initString("03837514-098b-11d8-9414-505054503030");
pub const IID_IConfigurationDataCollector = &IID_IConfigurationDataCollector_Value;
pub const IConfigurationDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDataCollector.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileMaxCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                count: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileMaxCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                count: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                count: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileMaxRecursiveDepth: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                depth: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                depth: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileMaxRecursiveDepth: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                depth: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                depth: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FileMaxTotalSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                size: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FileMaxTotalSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                size: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Files: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                Files: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                Files: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Files: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                Files: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                Files: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ManagementQueries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                Queries: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                Queries: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ManagementQueries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                Queries: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                Queries: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_QueryNetworkAdapters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                network: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                network: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_QueryNetworkAdapters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                network: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                network: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RegistryKeys: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                query: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                query: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RegistryKeys: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                query: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                query: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RegistryMaxRecursiveDepth: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                depth: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                depth: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RegistryMaxRecursiveDepth: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                depth: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                depth: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SystemStateFile: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                FileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                FileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SystemStateFile: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IConfigurationDataCollector,
                FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IConfigurationDataCollector,
                FileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDataCollector.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_FileMaxCount(self: *const T, count: ?*u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_FileMaxCount(@as(*const IConfigurationDataCollector, @ptrCast(self)), count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_FileMaxCount(self: *const T, count: u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_FileMaxCount(@as(*const IConfigurationDataCollector, @ptrCast(self)), count);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_FileMaxRecursiveDepth(self: *const T, depth: ?*u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_FileMaxRecursiveDepth(@as(*const IConfigurationDataCollector, @ptrCast(self)), depth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_FileMaxRecursiveDepth(self: *const T, depth: u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_FileMaxRecursiveDepth(@as(*const IConfigurationDataCollector, @ptrCast(self)), depth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_FileMaxTotalSize(self: *const T, size: ?*u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_FileMaxTotalSize(@as(*const IConfigurationDataCollector, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_FileMaxTotalSize(self: *const T, size: u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_FileMaxTotalSize(@as(*const IConfigurationDataCollector, @ptrCast(self)), size);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_Files(self: *const T, Files: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_Files(@as(*const IConfigurationDataCollector, @ptrCast(self)), Files);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_Files(self: *const T, Files: ?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_Files(@as(*const IConfigurationDataCollector, @ptrCast(self)), Files);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_ManagementQueries(self: *const T, Queries: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_ManagementQueries(@as(*const IConfigurationDataCollector, @ptrCast(self)), Queries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_ManagementQueries(self: *const T, Queries: ?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_ManagementQueries(@as(*const IConfigurationDataCollector, @ptrCast(self)), Queries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_QueryNetworkAdapters(self: *const T, network: ?*i16) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_QueryNetworkAdapters(@as(*const IConfigurationDataCollector, @ptrCast(self)), network);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_QueryNetworkAdapters(self: *const T, network: i16) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_QueryNetworkAdapters(@as(*const IConfigurationDataCollector, @ptrCast(self)), network);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_RegistryKeys(self: *const T, query: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_RegistryKeys(@as(*const IConfigurationDataCollector, @ptrCast(self)), query);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_RegistryKeys(self: *const T, query: ?*SAFEARRAY) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_RegistryKeys(@as(*const IConfigurationDataCollector, @ptrCast(self)), query);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_RegistryMaxRecursiveDepth(self: *const T, depth: ?*u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_RegistryMaxRecursiveDepth(@as(*const IConfigurationDataCollector, @ptrCast(self)), depth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_RegistryMaxRecursiveDepth(self: *const T, depth: u32) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_RegistryMaxRecursiveDepth(@as(*const IConfigurationDataCollector, @ptrCast(self)), depth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_get_SystemStateFile(self: *const T, FileName: ?*?BSTR) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).get_SystemStateFile(@as(*const IConfigurationDataCollector, @ptrCast(self)), FileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IConfigurationDataCollector_put_SystemStateFile(self: *const T, FileName: ?BSTR) HRESULT {
                return @as(*const IConfigurationDataCollector.VTable, @ptrCast(self.vtable)).put_SystemStateFile(@as(*const IConfigurationDataCollector, @ptrCast(self)), FileName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IAlertDataCollector_Value = Guid.initString("03837516-098b-11d8-9414-505054503030");
pub const IID_IAlertDataCollector = &IID_IAlertDataCollector_Value;
pub const IAlertDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDataCollector.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AlertThresholds: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                alerts: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                alerts: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AlertThresholds: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                alerts: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                alerts: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EventLog: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                log: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                log: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EventLog: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                log: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                log: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SampleInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                interval: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                interval: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SampleInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                interval: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                interval: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Task: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Task: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskRunAsSelf: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                RunAsSelf: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                RunAsSelf: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskRunAsSelf: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                RunAsSelf: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                RunAsSelf: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TaskUserTextArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TaskUserTextArguments: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                task: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TriggerDataCollectorSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TriggerDataCollectorSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IAlertDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IAlertDataCollector,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDataCollector.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_AlertThresholds(self: *const T, alerts: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_AlertThresholds(@as(*const IAlertDataCollector, @ptrCast(self)), alerts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_AlertThresholds(self: *const T, alerts: ?*SAFEARRAY) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_AlertThresholds(@as(*const IAlertDataCollector, @ptrCast(self)), alerts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_EventLog(self: *const T, log: ?*i16) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_EventLog(@as(*const IAlertDataCollector, @ptrCast(self)), log);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_EventLog(self: *const T, log: i16) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_EventLog(@as(*const IAlertDataCollector, @ptrCast(self)), log);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_SampleInterval(self: *const T, interval: ?*u32) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_SampleInterval(@as(*const IAlertDataCollector, @ptrCast(self)), interval);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_SampleInterval(self: *const T, interval: u32) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_SampleInterval(@as(*const IAlertDataCollector, @ptrCast(self)), interval);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_Task(self: *const T, task: ?*?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_Task(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_Task(self: *const T, task: ?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_Task(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_TaskRunAsSelf(self: *const T, RunAsSelf: ?*i16) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_TaskRunAsSelf(@as(*const IAlertDataCollector, @ptrCast(self)), RunAsSelf);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_TaskRunAsSelf(self: *const T, RunAsSelf: i16) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_TaskRunAsSelf(@as(*const IAlertDataCollector, @ptrCast(self)), RunAsSelf);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_TaskArguments(self: *const T, task: ?*?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_TaskArguments(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_TaskArguments(self: *const T, task: ?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_TaskArguments(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_TaskUserTextArguments(self: *const T, task: ?*?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_TaskUserTextArguments(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_TaskUserTextArguments(self: *const T, task: ?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_TaskUserTextArguments(@as(*const IAlertDataCollector, @ptrCast(self)), task);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_get_TriggerDataCollectorSet(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).get_TriggerDataCollectorSet(@as(*const IAlertDataCollector, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IAlertDataCollector_put_TriggerDataCollectorSet(self: *const T, name: ?BSTR) HRESULT {
                return @as(*const IAlertDataCollector.VTable, @ptrCast(self.vtable)).put_TriggerDataCollectorSet(@as(*const IAlertDataCollector, @ptrCast(self)), name);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IApiTracingDataCollector_Value = Guid.initString("0383751a-098b-11d8-9414-505054503030");
pub const IID_IApiTracingDataCollector = &IID_IApiTracingDataCollector_Value;
pub const IApiTracingDataCollector = extern struct {
    pub const VTable = extern struct {
        base: IDataCollector.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogApiNamesOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logapinames: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logapinames: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogApiNamesOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logapinames: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logapinames: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogApisRecursively: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logrecursively: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logrecursively: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogApisRecursively: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logrecursively: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logrecursively: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                exepath: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                exepath: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ExePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                exepath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                exepath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFilePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logfilepath: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logfilepath: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogFilePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                logfilepath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                logfilepath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncludeModules: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                includemodules: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                includemodules: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncludeModules: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                includemodules: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                includemodules: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncludeApis: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                includeapis: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                includeapis: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncludeApis: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                includeapis: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                includeapis: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExcludeApis: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                excludeapis: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                excludeapis: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ExcludeApis: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IApiTracingDataCollector,
                excludeapis: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IApiTracingDataCollector,
                excludeapis: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDataCollector.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_LogApiNamesOnly(self: *const T, logapinames: ?*i16) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_LogApiNamesOnly(@as(*const IApiTracingDataCollector, @ptrCast(self)), logapinames);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_LogApiNamesOnly(self: *const T, logapinames: i16) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_LogApiNamesOnly(@as(*const IApiTracingDataCollector, @ptrCast(self)), logapinames);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_LogApisRecursively(self: *const T, logrecursively: ?*i16) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_LogApisRecursively(@as(*const IApiTracingDataCollector, @ptrCast(self)), logrecursively);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_LogApisRecursively(self: *const T, logrecursively: i16) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_LogApisRecursively(@as(*const IApiTracingDataCollector, @ptrCast(self)), logrecursively);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_ExePath(self: *const T, exepath: ?*?BSTR) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_ExePath(@as(*const IApiTracingDataCollector, @ptrCast(self)), exepath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_ExePath(self: *const T, exepath: ?BSTR) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_ExePath(@as(*const IApiTracingDataCollector, @ptrCast(self)), exepath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_LogFilePath(self: *const T, logfilepath: ?*?BSTR) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_LogFilePath(@as(*const IApiTracingDataCollector, @ptrCast(self)), logfilepath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_LogFilePath(self: *const T, logfilepath: ?BSTR) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_LogFilePath(@as(*const IApiTracingDataCollector, @ptrCast(self)), logfilepath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_IncludeModules(self: *const T, includemodules: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_IncludeModules(@as(*const IApiTracingDataCollector, @ptrCast(self)), includemodules);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_IncludeModules(self: *const T, includemodules: ?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_IncludeModules(@as(*const IApiTracingDataCollector, @ptrCast(self)), includemodules);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_IncludeApis(self: *const T, includeapis: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_IncludeApis(@as(*const IApiTracingDataCollector, @ptrCast(self)), includeapis);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_IncludeApis(self: *const T, includeapis: ?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_IncludeApis(@as(*const IApiTracingDataCollector, @ptrCast(self)), includeapis);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_get_ExcludeApis(self: *const T, excludeapis: ?*?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).get_ExcludeApis(@as(*const IApiTracingDataCollector, @ptrCast(self)), excludeapis);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IApiTracingDataCollector_put_ExcludeApis(self: *const T, excludeapis: ?*SAFEARRAY) HRESULT {
                return @as(*const IApiTracingDataCollector.VTable, @ptrCast(self.vtable)).put_ExcludeApis(@as(*const IApiTracingDataCollector, @ptrCast(self)), excludeapis);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDataCollectorCollection_Value = Guid.initString("03837502-098b-11d8-9414-505054503030");
pub const IID_IDataCollectorCollection = &IID_IDataCollectorCollection_Value;
pub const IDataCollectorCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                index: VARIANT,
                collector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorCollection,
                index: VARIANT,
                collector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                collector: ?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
                collector: ?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                collector: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
                collector: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                collectors: ?*IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
                collectors: ?*IDataCollectorCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateDataCollectorFromXml: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                bstrXml: ?BSTR,
                pValidation: ?*?*IValueMap,
                pCollector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
                bstrXml: ?BSTR,
                pValidation: ?*?*IValueMap,
                pCollector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateDataCollector: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorCollection,
                Type: DataCollectorType,
                Collector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorCollection,
                Type: DataCollectorType,
                Collector: ?*?*IDataCollector,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_get_Count(self: *const T, retVal: ?*i32) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IDataCollectorCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_get_Item(self: *const T, index: VARIANT, collector: ?*?*IDataCollector) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IDataCollectorCollection, @ptrCast(self)), index, collector);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_get__NewEnum(self: *const T, retVal: ?*?*IUnknown) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IDataCollectorCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_Add(self: *const T, collector: ?*IDataCollector) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).Add(@as(*const IDataCollectorCollection, @ptrCast(self)), collector);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_Remove(self: *const T, collector: VARIANT) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).Remove(@as(*const IDataCollectorCollection, @ptrCast(self)), collector);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_Clear(self: *const T) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).Clear(@as(*const IDataCollectorCollection, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_AddRange(self: *const T, collectors: ?*IDataCollectorCollection) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IDataCollectorCollection, @ptrCast(self)), collectors);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_CreateDataCollectorFromXml(self: *const T, bstrXml: ?BSTR, pValidation: ?*?*IValueMap, pCollector: ?*?*IDataCollector) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).CreateDataCollectorFromXml(@as(*const IDataCollectorCollection, @ptrCast(self)), bstrXml, pValidation, pCollector);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorCollection_CreateDataCollector(self: *const T, Type: DataCollectorType, Collector: ?*?*IDataCollector) HRESULT {
                return @as(*const IDataCollectorCollection.VTable, @ptrCast(self.vtable)).CreateDataCollector(@as(*const IDataCollectorCollection, @ptrCast(self)), Type, Collector);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IDataCollectorSetCollection_Value = Guid.initString("03837524-098b-11d8-9414-505054503030");
pub const IID_IDataCollectorSetCollection = &IID_IDataCollectorSetCollection_Value;
pub const IDataCollectorSetCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                index: VARIANT,
                set: ?*?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                index: VARIANT,
                set: ?*?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                set: ?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                set: ?*IDataCollectorSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                set: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                set: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSetCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                sets: ?*IDataCollectorSetCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                sets: ?*IDataCollectorSetCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDataCollectorSets: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IDataCollectorSetCollection,
                server: ?BSTR,
                filter: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IDataCollectorSetCollection,
                server: ?BSTR,
                filter: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_get_Count(self: *const T, retVal: ?*i32) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IDataCollectorSetCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_get_Item(self: *const T, index: VARIANT, set: ?*?*IDataCollectorSet) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IDataCollectorSetCollection, @ptrCast(self)), index, set);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_get__NewEnum(self: *const T, retVal: ?*?*IUnknown) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IDataCollectorSetCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_Add(self: *const T, set: ?*IDataCollectorSet) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).Add(@as(*const IDataCollectorSetCollection, @ptrCast(self)), set);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_Remove(self: *const T, set: VARIANT) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).Remove(@as(*const IDataCollectorSetCollection, @ptrCast(self)), set);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_Clear(self: *const T) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).Clear(@as(*const IDataCollectorSetCollection, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_AddRange(self: *const T, sets: ?*IDataCollectorSetCollection) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IDataCollectorSetCollection, @ptrCast(self)), sets);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IDataCollectorSetCollection_GetDataCollectorSets(self: *const T, server: ?BSTR, filter: ?BSTR) HRESULT {
                return @as(*const IDataCollectorSetCollection.VTable, @ptrCast(self.vtable)).GetDataCollectorSets(@as(*const IDataCollectorSetCollection, @ptrCast(self)), server, filter);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ITraceDataProvider_Value = Guid.initString("03837512-098b-11d8-9414-505054503030");
pub const IID_ITraceDataProvider = &IID_ITraceDataProvider_Value;
pub const ITraceDataProvider = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                name: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                name: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Guid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                guid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                guid: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Guid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                guid: Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                guid: Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Level: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ppLevel: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ppLevel: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeywordsAny: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ppKeywords: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ppKeywords: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_KeywordsAll: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ppKeywords: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ppKeywords: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Properties: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ppProperties: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ppProperties: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FilterEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                FilterEnabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                FilterEnabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FilterEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                FilterEnabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                FilterEnabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FilterType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                pulType: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                pulType: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FilterType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ulType: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ulType: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FilterData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                ppData: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                ppData: ?*?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FilterData: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProvider,
                pData: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProvider,
                pData: ?*SAFEARRAY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Query: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProvider,
                bstrName: ?BSTR,
                bstrServer: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProvider,
                bstrName: ?BSTR,
                bstrServer: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Resolve: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProvider,
                pFrom: ?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProvider,
                pFrom: ?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetSecurity: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProvider,
                Sddl: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProvider,
                Sddl: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSecurity: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProvider,
                SecurityInfo: u32,
                Sddl: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProvider,
                SecurityInfo: u32,
                Sddl: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRegisteredProcesses: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProvider,
                Processes: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProvider,
                Processes: ?*?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_DisplayName(self: *const T, name: ?*?BSTR) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_DisplayName(@as(*const ITraceDataProvider, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_put_DisplayName(self: *const T, name: ?BSTR) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).put_DisplayName(@as(*const ITraceDataProvider, @ptrCast(self)), name);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_Guid(self: *const T, guid: ?*Guid) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_Guid(@as(*const ITraceDataProvider, @ptrCast(self)), guid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_put_Guid(self: *const T, guid: Guid) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).put_Guid(@as(*const ITraceDataProvider, @ptrCast(self)), guid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_Level(self: *const T, ppLevel: ?*?*IValueMap) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_Level(@as(*const ITraceDataProvider, @ptrCast(self)), ppLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_KeywordsAny(self: *const T, ppKeywords: ?*?*IValueMap) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_KeywordsAny(@as(*const ITraceDataProvider, @ptrCast(self)), ppKeywords);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_KeywordsAll(self: *const T, ppKeywords: ?*?*IValueMap) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_KeywordsAll(@as(*const ITraceDataProvider, @ptrCast(self)), ppKeywords);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_Properties(self: *const T, ppProperties: ?*?*IValueMap) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_Properties(@as(*const ITraceDataProvider, @ptrCast(self)), ppProperties);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_FilterEnabled(self: *const T, FilterEnabled: ?*i16) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_FilterEnabled(@as(*const ITraceDataProvider, @ptrCast(self)), FilterEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_put_FilterEnabled(self: *const T, FilterEnabled: i16) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).put_FilterEnabled(@as(*const ITraceDataProvider, @ptrCast(self)), FilterEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_FilterType(self: *const T, pulType: ?*u32) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_FilterType(@as(*const ITraceDataProvider, @ptrCast(self)), pulType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_put_FilterType(self: *const T, ulType: u32) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).put_FilterType(@as(*const ITraceDataProvider, @ptrCast(self)), ulType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_get_FilterData(self: *const T, ppData: ?*?*SAFEARRAY) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).get_FilterData(@as(*const ITraceDataProvider, @ptrCast(self)), ppData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_put_FilterData(self: *const T, pData: ?*SAFEARRAY) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).put_FilterData(@as(*const ITraceDataProvider, @ptrCast(self)), pData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_Query(self: *const T, bstrName: ?BSTR, bstrServer: ?BSTR) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).Query(@as(*const ITraceDataProvider, @ptrCast(self)), bstrName, bstrServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_Resolve(self: *const T, pFrom: ?*IDispatch) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).Resolve(@as(*const ITraceDataProvider, @ptrCast(self)), pFrom);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_SetSecurity(self: *const T, Sddl: ?BSTR) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).SetSecurity(@as(*const ITraceDataProvider, @ptrCast(self)), Sddl);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_GetSecurity(self: *const T, SecurityInfo: u32, Sddl: ?*?BSTR) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).GetSecurity(@as(*const ITraceDataProvider, @ptrCast(self)), SecurityInfo, Sddl);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProvider_GetRegisteredProcesses(self: *const T, Processes: ?*?*IValueMap) HRESULT {
                return @as(*const ITraceDataProvider.VTable, @ptrCast(self.vtable)).GetRegisteredProcesses(@as(*const ITraceDataProvider, @ptrCast(self)), Processes);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ITraceDataProviderCollection_Value = Guid.initString("03837510-098b-11d8-9414-505054503030");
pub const IID_ITraceDataProviderCollection = &IID_ITraceDataProviderCollection_Value;
pub const ITraceDataProviderCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                index: VARIANT,
                ppProvider: ?*?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                index: VARIANT,
                ppProvider: ?*?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                pProvider: ?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                pProvider: ?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                vProvider: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                vProvider: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                providers: ?*ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                providers: ?*ITraceDataProviderCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateTraceDataProvider: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                Provider: ?*?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                Provider: ?*?*ITraceDataProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetTraceDataProviders: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                server: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                server: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetTraceDataProvidersByProcess: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ITraceDataProviderCollection,
                Server: ?BSTR,
                Pid: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ITraceDataProviderCollection,
                Server: ?BSTR,
                Pid: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_get_Count(self: *const T, retVal: ?*i32) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ITraceDataProviderCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_get_Item(self: *const T, index: VARIANT, ppProvider: ?*?*ITraceDataProvider) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const ITraceDataProviderCollection, @ptrCast(self)), index, ppProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_get__NewEnum(self: *const T, retVal: ?*?*IUnknown) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ITraceDataProviderCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_Add(self: *const T, pProvider: ?*ITraceDataProvider) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).Add(@as(*const ITraceDataProviderCollection, @ptrCast(self)), pProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_Remove(self: *const T, vProvider: VARIANT) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).Remove(@as(*const ITraceDataProviderCollection, @ptrCast(self)), vProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_Clear(self: *const T) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).Clear(@as(*const ITraceDataProviderCollection, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_AddRange(self: *const T, providers: ?*ITraceDataProviderCollection) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).AddRange(@as(*const ITraceDataProviderCollection, @ptrCast(self)), providers);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_CreateTraceDataProvider(self: *const T, Provider: ?*?*ITraceDataProvider) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).CreateTraceDataProvider(@as(*const ITraceDataProviderCollection, @ptrCast(self)), Provider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_GetTraceDataProviders(self: *const T, server: ?BSTR) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).GetTraceDataProviders(@as(*const ITraceDataProviderCollection, @ptrCast(self)), server);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ITraceDataProviderCollection_GetTraceDataProvidersByProcess(self: *const T, Server: ?BSTR, Pid: u32) HRESULT {
                return @as(*const ITraceDataProviderCollection.VTable, @ptrCast(self.vtable)).GetTraceDataProvidersByProcess(@as(*const ITraceDataProviderCollection, @ptrCast(self)), Server, Pid);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_ISchedule_Value = Guid.initString("0383753a-098b-11d8-9414-505054503030");
pub const IID_ISchedule = &IID_ISchedule_Value;
pub const ISchedule = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StartDate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                start: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                start: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_StartDate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                start: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                start: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EndDate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                end: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                end: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EndDate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                end: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                end: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StartTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                start: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                start: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_StartTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                start: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                start: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Days: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                days: ?*WeekDays,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                days: ?*WeekDays,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Days: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISchedule,
                days: WeekDays,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISchedule,
                days: WeekDays,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_get_StartDate(self: *const T, start: ?*VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).get_StartDate(@as(*const ISchedule, @ptrCast(self)), start);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_put_StartDate(self: *const T, start: VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).put_StartDate(@as(*const ISchedule, @ptrCast(self)), start);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_get_EndDate(self: *const T, end: ?*VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).get_EndDate(@as(*const ISchedule, @ptrCast(self)), end);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_put_EndDate(self: *const T, end: VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).put_EndDate(@as(*const ISchedule, @ptrCast(self)), end);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_get_StartTime(self: *const T, start: ?*VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).get_StartTime(@as(*const ISchedule, @ptrCast(self)), start);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_put_StartTime(self: *const T, start: VARIANT) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).put_StartTime(@as(*const ISchedule, @ptrCast(self)), start);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_get_Days(self: *const T, days: ?*WeekDays) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).get_Days(@as(*const ISchedule, @ptrCast(self)), days);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISchedule_put_Days(self: *const T, days: WeekDays) HRESULT {
                return @as(*const ISchedule.VTable, @ptrCast(self.vtable)).put_Days(@as(*const ISchedule, @ptrCast(self)), days);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IScheduleCollection_Value = Guid.initString("0383753d-098b-11d8-9414-505054503030");
pub const IID_IScheduleCollection = &IID_IScheduleCollection_Value;
pub const IScheduleCollection = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IScheduleCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IScheduleCollection,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IScheduleCollection,
                index: VARIANT,
                ppSchedule: ?*?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IScheduleCollection,
                index: VARIANT,
                ppSchedule: ?*?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IScheduleCollection,
                ienum: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IScheduleCollection,
                ienum: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IScheduleCollection,
                pSchedule: ?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IScheduleCollection,
                pSchedule: ?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IScheduleCollection,
                vSchedule: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IScheduleCollection,
                vSchedule: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IScheduleCollection,
                pSchedules: ?*IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IScheduleCollection,
                pSchedules: ?*IScheduleCollection,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateSchedule: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IScheduleCollection,
                Schedule: ?*?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IScheduleCollection,
                Schedule: ?*?*ISchedule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_get_Count(self: *const T, retVal: ?*i32) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IScheduleCollection, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_get_Item(self: *const T, index: VARIANT, ppSchedule: ?*?*ISchedule) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IScheduleCollection, @ptrCast(self)), index, ppSchedule);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_get__NewEnum(self: *const T, ienum: ?*?*IUnknown) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IScheduleCollection, @ptrCast(self)), ienum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_Add(self: *const T, pSchedule: ?*ISchedule) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).Add(@as(*const IScheduleCollection, @ptrCast(self)), pSchedule);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_Remove(self: *const T, vSchedule: VARIANT) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).Remove(@as(*const IScheduleCollection, @ptrCast(self)), vSchedule);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_Clear(self: *const T) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).Clear(@as(*const IScheduleCollection, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_AddRange(self: *const T, pSchedules: ?*IScheduleCollection) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IScheduleCollection, @ptrCast(self)), pSchedules);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IScheduleCollection_CreateSchedule(self: *const T, Schedule: ?*?*ISchedule) HRESULT {
                return @as(*const IScheduleCollection.VTable, @ptrCast(self.vtable)).CreateSchedule(@as(*const IScheduleCollection, @ptrCast(self)), Schedule);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IValueMapItem_Value = Guid.initString("03837533-098b-11d8-9414-505054503030");
pub const IID_IValueMapItem = &IID_IValueMapItem_Value;
pub const IValueMapItem = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Enabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                enabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                enabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Enabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                enabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                enabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Key: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                key: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                key: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Key: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                key: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                key: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                Value: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                Value: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                Value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                Value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ValueMapType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                type: ?*ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                type: ?*ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ValueMapType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMapItem,
                type: ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMapItem,
                type: ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_get_Description(self: *const T, description: ?*?BSTR) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).get_Description(@as(*const IValueMapItem, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_put_Description(self: *const T, description: ?BSTR) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).put_Description(@as(*const IValueMapItem, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_get_Enabled(self: *const T, enabled: ?*i16) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).get_Enabled(@as(*const IValueMapItem, @ptrCast(self)), enabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_put_Enabled(self: *const T, enabled: i16) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).put_Enabled(@as(*const IValueMapItem, @ptrCast(self)), enabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_get_Key(self: *const T, key: ?*?BSTR) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).get_Key(@as(*const IValueMapItem, @ptrCast(self)), key);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_put_Key(self: *const T, key: ?BSTR) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).put_Key(@as(*const IValueMapItem, @ptrCast(self)), key);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_get_Value(self: *const T, Value: ?*VARIANT) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).get_Value(@as(*const IValueMapItem, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_put_Value(self: *const T, Value: VARIANT) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).put_Value(@as(*const IValueMapItem, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_get_ValueMapType(self: *const T, type_: ?*ValueMapType) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).get_ValueMapType(@as(*const IValueMapItem, @ptrCast(self)), type_);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMapItem_put_ValueMapType(self: *const T, type_: ValueMapType) HRESULT {
                return @as(*const IValueMapItem.VTable, @ptrCast(self.vtable)).put_ValueMapType(@as(*const IValueMapItem, @ptrCast(self)), type_);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IValueMap_Value = Guid.initString("03837534-098b-11d8-9414-505054503030");
pub const IID_IValueMap = &IID_IValueMap_Value;
pub const IValueMap = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                retVal: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                index: VARIANT,
                value: ?*?*IValueMapItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                index: VARIANT,
                value: ?*?*IValueMapItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                retVal: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                description: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Description: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                description: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                Value: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                Value: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                Value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                Value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ValueMapType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                type: ?*ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                type: ?*ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ValueMapType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IValueMap,
                type: ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IValueMap,
                type: ValueMapType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IValueMap,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IValueMap,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IValueMap,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IValueMap,
                value: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IValueMap,
                map: ?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IValueMap,
                map: ?*IValueMap,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateValueMapItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IValueMap,
                Item: ?*?*IValueMapItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IValueMap,
                Item: ?*?*IValueMapItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get_Count(self: *const T, retVal: ?*i32) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IValueMap, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get_Item(self: *const T, index: VARIANT, value: ?*?*IValueMapItem) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IValueMap, @ptrCast(self)), index, value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get__NewEnum(self: *const T, retVal: ?*?*IUnknown) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IValueMap, @ptrCast(self)), retVal);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get_Description(self: *const T, description: ?*?BSTR) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get_Description(@as(*const IValueMap, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_put_Description(self: *const T, description: ?BSTR) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).put_Description(@as(*const IValueMap, @ptrCast(self)), description);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get_Value(self: *const T, Value: ?*VARIANT) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get_Value(@as(*const IValueMap, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_put_Value(self: *const T, Value: VARIANT) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).put_Value(@as(*const IValueMap, @ptrCast(self)), Value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_get_ValueMapType(self: *const T, type_: ?*ValueMapType) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).get_ValueMapType(@as(*const IValueMap, @ptrCast(self)), type_);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_put_ValueMapType(self: *const T, type_: ValueMapType) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).put_ValueMapType(@as(*const IValueMap, @ptrCast(self)), type_);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_Add(self: *const T, value: VARIANT) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).Add(@as(*const IValueMap, @ptrCast(self)), value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_Remove(self: *const T, value: VARIANT) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).Remove(@as(*const IValueMap, @ptrCast(self)), value);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_Clear(self: *const T) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).Clear(@as(*const IValueMap, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_AddRange(self: *const T, map: ?*IValueMap) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).AddRange(@as(*const IValueMap, @ptrCast(self)), map);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IValueMap_CreateValueMapItem(self: *const T, Item: ?*?*IValueMapItem) HRESULT {
                return @as(*const IValueMap.VTable, @ptrCast(self.vtable)).CreateValueMapItem(@as(*const IValueMap, @ptrCast(self)), Item);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const PERF_COUNTERSET_INFO = extern struct {
    CounterSetGuid: Guid,
    ProviderGuid: Guid,
    NumCounters: u32,
    InstanceType: u32,
};

pub const PERF_COUNTER_INFO = extern struct {
    CounterId: u32,
    Type: u32,
    Attrib: u64,
    Size: u32,
    DetailLevel: u32,
    Scale: i32,
    Offset: u32,
};

pub const PERF_COUNTERSET_INSTANCE = extern struct {
    CounterSetGuid: Guid,
    dwSize: u32,
    InstanceId: u32,
    InstanceNameOffset: u32,
    InstanceNameSize: u32,
};

pub const PERF_COUNTER_IDENTITY = extern struct {
    CounterSetGuid: Guid,
    BufferSize: u32,
    CounterId: u32,
    InstanceId: u32,
    MachineOffset: u32,
    NameOffset: u32,
    Reserved: u32,
};

pub const PERFLIBREQUEST = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        RequestCode: u32,
        Buffer: ?*anyopaque,
        BufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        RequestCode: u32,
        Buffer: ?*anyopaque,
        BufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PERF_MEM_ALLOC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        AllocSize: usize,
        pContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        AllocSize: usize,
        pContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const PERF_MEM_FREE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pBuffer: ?*anyopaque,
        pContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        pBuffer: ?*anyopaque,
        pContext: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const PERF_PROVIDER_CONTEXT = extern struct {
    ContextSize: u32,
    Reserved: u32,
    ControlCallback: ?PERFLIBREQUEST,
    MemAllocRoutine: ?PERF_MEM_ALLOC,
    MemFreeRoutine: ?PERF_MEM_FREE,
    pMemContext: ?*anyopaque,
};

pub const PERF_INSTANCE_HEADER = extern struct {
    Size: u32,
    InstanceId: u32,
};

pub const PerfRegInfoType = enum(i32) {
    COUNTERSET_STRUCT = 1,
    COUNTER_STRUCT = 2,
    COUNTERSET_NAME_STRING = 3,
    COUNTERSET_HELP_STRING = 4,
    COUNTER_NAME_STRINGS = 5,
    COUNTER_HELP_STRINGS = 6,
    PROVIDER_NAME = 7,
    PROVIDER_GUID = 8,
    COUNTERSET_ENGLISH_NAME = 9,
    COUNTER_ENGLISH_NAMES = 10,
};
pub const PERF_REG_COUNTERSET_STRUCT = PerfRegInfoType.COUNTERSET_STRUCT;
pub const PERF_REG_COUNTER_STRUCT = PerfRegInfoType.COUNTER_STRUCT;
pub const PERF_REG_COUNTERSET_NAME_STRING = PerfRegInfoType.COUNTERSET_NAME_STRING;
pub const PERF_REG_COUNTERSET_HELP_STRING = PerfRegInfoType.COUNTERSET_HELP_STRING;
pub const PERF_REG_COUNTER_NAME_STRINGS = PerfRegInfoType.COUNTER_NAME_STRINGS;
pub const PERF_REG_COUNTER_HELP_STRINGS = PerfRegInfoType.COUNTER_HELP_STRINGS;
pub const PERF_REG_PROVIDER_NAME = PerfRegInfoType.PROVIDER_NAME;
pub const PERF_REG_PROVIDER_GUID = PerfRegInfoType.PROVIDER_GUID;
pub const PERF_REG_COUNTERSET_ENGLISH_NAME = PerfRegInfoType.COUNTERSET_ENGLISH_NAME;
pub const PERF_REG_COUNTER_ENGLISH_NAMES = PerfRegInfoType.COUNTER_ENGLISH_NAMES;

pub const PERF_COUNTERSET_REG_INFO = extern struct {
    CounterSetGuid: Guid,
    CounterSetType: u32,
    DetailLevel: u32,
    NumCounters: u32,
    InstanceType: u32,
};

pub const PERF_COUNTER_REG_INFO = extern struct {
    CounterId: u32,
    Type: u32,
    Attrib: u64,
    DetailLevel: u32,
    DefaultScale: i32,
    BaseCounterId: u32,
    PerfTimeId: u32,
    PerfFreqId: u32,
    MultiId: u32,
    AggregateFunc: PERF_COUNTER_AGGREGATE_FUNC,
    Reserved: u32,
};

pub const PERF_STRING_BUFFER_HEADER = extern struct {
    dwSize: u32,
    dwCounters: u32,
};

pub const PERF_STRING_COUNTER_HEADER = extern struct {
    dwCounterId: u32,
    dwOffset: u32,
};

pub const PERF_COUNTER_IDENTIFIER = extern struct {
    CounterSetGuid: Guid,
    Status: u32,
    Size: u32,
    CounterId: u32,
    InstanceId: u32,
    Index: u32,
    Reserved: u32,
};

pub const PERF_DATA_HEADER = extern struct {
    dwTotalSize: u32,
    dwNumCounters: u32,
    PerfTimeStamp: i64,
    PerfTime100NSec: i64,
    PerfFreq: i64,
    SystemTime: SYSTEMTIME,
};

pub const PerfCounterDataType = enum(i32) {
    ERROR_RETURN = 0,
    SINGLE_COUNTER = 1,
    MULTIPLE_COUNTERS = 2,
    MULTIPLE_INSTANCES = 4,
    COUNTERSET = 6,
};
pub const PERF_ERROR_RETURN = PerfCounterDataType.ERROR_RETURN;
pub const PERF_SINGLE_COUNTER = PerfCounterDataType.SINGLE_COUNTER;
pub const PERF_MULTIPLE_COUNTERS = PerfCounterDataType.MULTIPLE_COUNTERS;
pub const PERF_MULTIPLE_INSTANCES = PerfCounterDataType.MULTIPLE_INSTANCES;
pub const PERF_COUNTERSET = PerfCounterDataType.COUNTERSET;

pub const PERF_COUNTER_HEADER = extern struct {
    dwStatus: u32,
    dwType: PerfCounterDataType,
    dwSize: u32,
    Reserved: u32,
};

pub const PERF_MULTI_INSTANCES = extern struct {
    dwTotalSize: u32,
    dwInstances: u32,
};

pub const PERF_MULTI_COUNTERS = extern struct {
    dwSize: u32,
    dwCounters: u32,
};

pub const PERF_COUNTER_DATA = extern struct {
    dwDataSize: u32,
    dwSize: u32,
};

pub const PERF_DATA_BLOCK = extern struct {
    Signature: [4]u16,
    LittleEndian: u32,
    Version: u32,
    Revision: u32,
    TotalByteLength: u32,
    HeaderLength: u32,
    NumObjectTypes: u32,
    DefaultObject: i32,
    SystemTime: SYSTEMTIME,
    PerfTime: LARGE_INTEGER,
    PerfFreq: LARGE_INTEGER,
    PerfTime100nSec: LARGE_INTEGER,
    SystemNameLength: u32,
    SystemNameOffset: u32,
};

pub const PERF_INSTANCE_DEFINITION = extern struct {
    ByteLength: u32,
    ParentObjectTitleIndex: u32,
    ParentObjectInstance: u32,
    UniqueID: i32,
    NameOffset: u32,
    NameLength: u32,
};

pub const PERF_COUNTER_BLOCK = extern struct {
    ByteLength: u32,
};

pub const PM_OPEN_PROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pContext: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        pContext: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PM_COLLECT_PROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pValueName: ?PWSTR,
        ppData: ?*?*anyopaque,
        pcbTotalBytes: ?*u32,
        pNumObjectTypes: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        pValueName: ?PWSTR,
        ppData: ?*?*anyopaque,
        pcbTotalBytes: ?*u32,
        pNumObjectTypes: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PM_CLOSE_PROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn () callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn () callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PDH_RAW_COUNTER = extern struct {
    CStatus: u32,
    TimeStamp: FILETIME,
    FirstValue: i64,
    SecondValue: i64,
    MultiCount: u32,
};

pub const PDH_RAW_COUNTER_ITEM_A = extern struct {
    szName: ?PSTR,
    RawValue: PDH_RAW_COUNTER,
};

pub const PDH_RAW_COUNTER_ITEM_W = extern struct {
    szName: ?PWSTR,
    RawValue: PDH_RAW_COUNTER,
};

pub const PDH_FMT_COUNTERVALUE = extern struct {
    CStatus: u32,
    Anonymous: extern union {
        longValue: i32,
        doubleValue: f64,
        largeValue: i64,
        AnsiStringValue: ?[*:0]const u8,
        WideStringValue: ?[*:0]const u16,
    },
};

pub const PDH_FMT_COUNTERVALUE_ITEM_A = extern struct {
    szName: ?PSTR,
    FmtValue: PDH_FMT_COUNTERVALUE,
};

pub const PDH_FMT_COUNTERVALUE_ITEM_W = extern struct {
    szName: ?PWSTR,
    FmtValue: PDH_FMT_COUNTERVALUE,
};

pub const PDH_STATISTICS = extern struct {
    dwFormat: u32,
    count: u32,
    min: PDH_FMT_COUNTERVALUE,
    max: PDH_FMT_COUNTERVALUE,
    mean: PDH_FMT_COUNTERVALUE,
};

pub const PDH_COUNTER_PATH_ELEMENTS_A = extern struct {
    szMachineName: ?PSTR,
    szObjectName: ?PSTR,
    szInstanceName: ?PSTR,
    szParentInstance: ?PSTR,
    dwInstanceIndex: u32,
    szCounterName: ?PSTR,
};

pub const PDH_COUNTER_PATH_ELEMENTS_W = extern struct {
    szMachineName: ?PWSTR,
    szObjectName: ?PWSTR,
    szInstanceName: ?PWSTR,
    szParentInstance: ?PWSTR,
    dwInstanceIndex: u32,
    szCounterName: ?PWSTR,
};

pub const PDH_DATA_ITEM_PATH_ELEMENTS_A = extern struct {
    szMachineName: ?PSTR,
    ObjectGUID: Guid,
    dwItemId: u32,
    szInstanceName: ?PSTR,
};

pub const PDH_DATA_ITEM_PATH_ELEMENTS_W = extern struct {
    szMachineName: ?PWSTR,
    ObjectGUID: Guid,
    dwItemId: u32,
    szInstanceName: ?PWSTR,
};

pub const PDH_COUNTER_INFO_A = extern struct {
    dwLength: u32,
    dwType: u32,
    CVersion: u32,
    CStatus: u32,
    lScale: i32,
    lDefaultScale: i32,
    dwUserData: usize,
    dwQueryUserData: usize,
    szFullPath: ?PSTR,
    Anonymous: extern union {
        DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_A,
        CounterPath: PDH_COUNTER_PATH_ELEMENTS_A,
        Anonymous: extern struct {
            szMachineName: ?PSTR,
            szObjectName: ?PSTR,
            szInstanceName: ?PSTR,
            szParentInstance: ?PSTR,
            dwInstanceIndex: u32,
            szCounterName: ?PSTR,
        },
    },
    szExplainText: ?PSTR,
    DataBuffer: [1]u32,
};

pub const PDH_COUNTER_INFO_W = extern struct {
    dwLength: u32,
    dwType: u32,
    CVersion: u32,
    CStatus: u32,
    lScale: i32,
    lDefaultScale: i32,
    dwUserData: usize,
    dwQueryUserData: usize,
    szFullPath: ?PWSTR,
    Anonymous: extern union {
        DataItemPath: PDH_DATA_ITEM_PATH_ELEMENTS_W,
        CounterPath: PDH_COUNTER_PATH_ELEMENTS_W,
        Anonymous: extern struct {
            szMachineName: ?PWSTR,
            szObjectName: ?PWSTR,
            szInstanceName: ?PWSTR,
            szParentInstance: ?PWSTR,
            dwInstanceIndex: u32,
            szCounterName: ?PWSTR,
        },
    },
    szExplainText: ?PWSTR,
    DataBuffer: [1]u32,
};

pub const PDH_TIME_INFO = extern struct {
    StartTime: i64,
    EndTime: i64,
    SampleCount: u32,
};

pub const PDH_RAW_LOG_RECORD = extern struct {
    dwStructureSize: u32,
    dwRecordType: PDH_LOG_TYPE,
    dwItems: u32,
    RawBytes: [1]u8,
};

pub const PDH_LOG_SERVICE_QUERY_INFO_A = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwLogQuota: u32,
    szLogFileCaption: ?PSTR,
    szDefaultDir: ?PSTR,
    szBaseFileName: ?PSTR,
    dwFileType: u32,
    dwReserved: u32,
    Anonymous: extern union {
        Anonymous1: extern struct {
            PdlAutoNameInterval: u32,
            PdlAutoNameUnits: u32,
            PdlCommandFilename: ?PSTR,
            PdlCounterList: ?PSTR,
            PdlAutoNameFormat: u32,
            PdlSampleInterval: u32,
            PdlLogStartTime: FILETIME,
            PdlLogEndTime: FILETIME,
        },
        Anonymous2: extern struct {
            TlNumberOfBuffers: u32,
            TlMinimumBuffers: u32,
            TlMaximumBuffers: u32,
            TlFreeBuffers: u32,
            TlBufferSize: u32,
            TlEventsLost: u32,
            TlLoggerThreadId: u32,
            TlBuffersWritten: u32,
            TlLogHandle: u32,
            TlLogFileName: ?PSTR,
        },
    },
};

pub const PDH_LOG_SERVICE_QUERY_INFO_W = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwLogQuota: u32,
    szLogFileCaption: ?PWSTR,
    szDefaultDir: ?PWSTR,
    szBaseFileName: ?PWSTR,
    dwFileType: u32,
    dwReserved: u32,
    Anonymous: extern union {
        Anonymous1: extern struct {
            PdlAutoNameInterval: u32,
            PdlAutoNameUnits: u32,
            PdlCommandFilename: ?PWSTR,
            PdlCounterList: ?PWSTR,
            PdlAutoNameFormat: u32,
            PdlSampleInterval: u32,
            PdlLogStartTime: FILETIME,
            PdlLogEndTime: FILETIME,
        },
        Anonymous2: extern struct {
            TlNumberOfBuffers: u32,
            TlMinimumBuffers: u32,
            TlMaximumBuffers: u32,
            TlFreeBuffers: u32,
            TlBufferSize: u32,
            TlEventsLost: u32,
            TlLoggerThreadId: u32,
            TlBuffersWritten: u32,
            TlLogHandle: u32,
            TlLogFileName: ?PWSTR,
        },
    },
};

pub const CounterPathCallBack = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: usize,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: usize,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PDH_BROWSE_DLG_CONFIG_HW = extern struct {
    _bitfield: u32,
    hWndOwner: ?HWND,
    hDataSource: isize,
    szReturnPathBuffer: ?PWSTR,
    cchReturnPathLength: u32,
    pCallBack: ?CounterPathCallBack,
    dwCallBackArg: usize,
    CallBackStatus: i32,
    dwDefaultDetailLevel: PERF_DETAIL,
    szDialogBoxCaption: ?PWSTR,
};

pub const PDH_BROWSE_DLG_CONFIG_HA = extern struct {
    _bitfield: u32,
    hWndOwner: ?HWND,
    hDataSource: isize,
    szReturnPathBuffer: ?PSTR,
    cchReturnPathLength: u32,
    pCallBack: ?CounterPathCallBack,
    dwCallBackArg: usize,
    CallBackStatus: i32,
    dwDefaultDetailLevel: PERF_DETAIL,
    szDialogBoxCaption: ?PSTR,
};

pub const PDH_BROWSE_DLG_CONFIG_W = extern struct {
    _bitfield: u32,
    hWndOwner: ?HWND,
    szDataSource: ?PWSTR,
    szReturnPathBuffer: ?PWSTR,
    cchReturnPathLength: u32,
    pCallBack: ?CounterPathCallBack,
    dwCallBackArg: usize,
    CallBackStatus: i32,
    dwDefaultDetailLevel: PERF_DETAIL,
    szDialogBoxCaption: ?PWSTR,
};

pub const PDH_BROWSE_DLG_CONFIG_A = extern struct {
    _bitfield: u32,
    hWndOwner: ?HWND,
    szDataSource: ?PSTR,
    szReturnPathBuffer: ?PSTR,
    cchReturnPathLength: u32,
    pCallBack: ?CounterPathCallBack,
    dwCallBackArg: usize,
    CallBackStatus: i32,
    dwDefaultDetailLevel: PERF_DETAIL,
    szDialogBoxCaption: ?PSTR,
};

const CLSID_SystemMonitor_Value = Guid.initString("c4d2d8e0-d1dd-11ce-940f-008029004347");
pub const CLSID_SystemMonitor = &CLSID_SystemMonitor_Value;

const CLSID_CounterItem_Value = Guid.initString("c4d2d8e0-d1dd-11ce-940f-008029004348");
pub const CLSID_CounterItem = &CLSID_CounterItem_Value;

const CLSID_Counters_Value = Guid.initString("b2b066d2-2aac-11cf-942f-008029004347");
pub const CLSID_Counters = &CLSID_Counters_Value;

const CLSID_LogFileItem_Value = Guid.initString("16ec5be8-df93-4237-94e4-9ee918111d71");
pub const CLSID_LogFileItem = &CLSID_LogFileItem_Value;

const CLSID_LogFiles_Value = Guid.initString("2735d9fd-f6b9-4f19-a5d9-e2d068584bc5");
pub const CLSID_LogFiles = &CLSID_LogFiles_Value;

const CLSID_CounterItem2_Value = Guid.initString("43196c62-c31f-4ce3-a02e-79efe0f6a525");
pub const CLSID_CounterItem2 = &CLSID_CounterItem2_Value;

const CLSID_SystemMonitor2_Value = Guid.initString("7f30578c-5f38-4612-acfe-6ed04c7b7af8");
pub const CLSID_SystemMonitor2 = &CLSID_SystemMonitor2_Value;

const CLSID_AppearPropPage_Value = Guid.initString("e49741e9-93a8-4ab1-8e96-bf4482282e9c");
pub const CLSID_AppearPropPage = &CLSID_AppearPropPage_Value;

const CLSID_GeneralPropPage_Value = Guid.initString("c3e5d3d2-1a03-11cf-942d-008029004347");
pub const CLSID_GeneralPropPage = &CLSID_GeneralPropPage_Value;

const CLSID_GraphPropPage_Value = Guid.initString("c3e5d3d3-1a03-11cf-942d-008029004347");
pub const CLSID_GraphPropPage = &CLSID_GraphPropPage_Value;

const CLSID_SourcePropPage_Value = Guid.initString("0cf32aa1-7571-11d0-93c4-00aa00a3ddea");
pub const CLSID_SourcePropPage = &CLSID_SourcePropPage_Value;

const CLSID_CounterPropPage_Value = Guid.initString("cf948561-ede8-11ce-941e-008029004347");
pub const CLSID_CounterPropPage = &CLSID_CounterPropPage_Value;

pub const DisplayTypeConstants = enum(i32) {
    LineGraph = 1,
    Histogram = 2,
    Report = 3,
    ChartArea = 4,
    ChartStackedArea = 5,
};
pub const sysmonLineGraph = DisplayTypeConstants.LineGraph;
pub const sysmonHistogram = DisplayTypeConstants.Histogram;
pub const sysmonReport = DisplayTypeConstants.Report;
pub const sysmonChartArea = DisplayTypeConstants.ChartArea;
pub const sysmonChartStackedArea = DisplayTypeConstants.ChartStackedArea;

pub const ReportValueTypeConstants = enum(i32) {
    DefaultValue = 0,
    CurrentValue = 1,
    Average = 2,
    Minimum = 3,
    Maximum = 4,
};
pub const sysmonDefaultValue = ReportValueTypeConstants.DefaultValue;
pub const sysmonCurrentValue = ReportValueTypeConstants.CurrentValue;
pub const sysmonAverage = ReportValueTypeConstants.Average;
pub const sysmonMinimum = ReportValueTypeConstants.Minimum;
pub const sysmonMaximum = ReportValueTypeConstants.Maximum;

pub const DataSourceTypeConstants = enum(i32) {
    NullDataSource = -1,
    CurrentActivity = 1,
    LogFiles = 2,
    SqlLog = 3,
};
pub const sysmonNullDataSource = DataSourceTypeConstants.NullDataSource;
pub const sysmonCurrentActivity = DataSourceTypeConstants.CurrentActivity;
pub const sysmonLogFiles = DataSourceTypeConstants.LogFiles;
pub const sysmonSqlLog = DataSourceTypeConstants.SqlLog;

pub const SysmonFileType = enum(i32) {
    Html = 1,
    Report = 2,
    Csv = 3,
    Tsv = 4,
    Blg = 5,
    RetiredBlg = 6,
    Gif = 7,
};
pub const sysmonFileHtml = SysmonFileType.Html;
pub const sysmonFileReport = SysmonFileType.Report;
pub const sysmonFileCsv = SysmonFileType.Csv;
pub const sysmonFileTsv = SysmonFileType.Tsv;
pub const sysmonFileBlg = SysmonFileType.Blg;
pub const sysmonFileRetiredBlg = SysmonFileType.RetiredBlg;
pub const sysmonFileGif = SysmonFileType.Gif;

pub const SysmonDataType = enum(i32) {
    Avg = 1,
    Min = 2,
    Max = 3,
    Time = 4,
    Count = 5,
};
pub const sysmonDataAvg = SysmonDataType.Avg;
pub const sysmonDataMin = SysmonDataType.Min;
pub const sysmonDataMax = SysmonDataType.Max;
pub const sysmonDataTime = SysmonDataType.Time;
pub const sysmonDataCount = SysmonDataType.Count;

pub const SysmonBatchReason = enum(i32) {
    None = 0,
    AddFiles = 1,
    AddCounters = 2,
    AddFilesAutoCounters = 3,
};
pub const sysmonBatchNone = SysmonBatchReason.None;
pub const sysmonBatchAddFiles = SysmonBatchReason.AddFiles;
pub const sysmonBatchAddCounters = SysmonBatchReason.AddCounters;
pub const sysmonBatchAddFilesAutoCounters = SysmonBatchReason.AddFilesAutoCounters;

const IID_ICounterItem_Value = Guid.initString("771a9520-ee28-11ce-941e-008029004347");
pub const IID_ICounterItem = &IID_ICounterItem_Value;
pub const ICounterItem = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                pdblValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                pdblValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Color: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Color: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Width: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                iWidth: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                iWidth: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Width: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LineStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                iLineStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                iLineStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LineStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ScaleFactor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                iScale: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                iScale: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScaleFactor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Path: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICounterItem,
                Value: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICounterItem,
                Value: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatistics: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICounterItem,
                Max: ?*f64,
                Min: ?*f64,
                Avg: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICounterItem,
                Max: ?*f64,
                Min: ?*f64,
                Avg: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_Value(self: *const T, pdblValue: ?*f64) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_Value(@as(*const ICounterItem, @ptrCast(self)), pdblValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_put_Color(self: *const T, Color: u32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).put_Color(@as(*const ICounterItem, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_Color(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_Color(@as(*const ICounterItem, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_put_Width(self: *const T, iWidth: i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).put_Width(@as(*const ICounterItem, @ptrCast(self)), iWidth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_Width(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_Width(@as(*const ICounterItem, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_put_LineStyle(self: *const T, iLineStyle: i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).put_LineStyle(@as(*const ICounterItem, @ptrCast(self)), iLineStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_LineStyle(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_LineStyle(@as(*const ICounterItem, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_put_ScaleFactor(self: *const T, iScale: i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).put_ScaleFactor(@as(*const ICounterItem, @ptrCast(self)), iScale);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_ScaleFactor(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_ScaleFactor(@as(*const ICounterItem, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_get_Path(self: *const T, pstrValue: ?*?BSTR) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).get_Path(@as(*const ICounterItem, @ptrCast(self)), pstrValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_GetValue(self: *const T, Value: ?*f64, Status: ?*i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).GetValue(@as(*const ICounterItem, @ptrCast(self)), Value, Status);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem_GetStatistics(self: *const T, Max: ?*f64, Min: ?*f64, Avg: ?*f64, Status: ?*i32) HRESULT {
                return @as(*const ICounterItem.VTable, @ptrCast(self.vtable)).GetStatistics(@as(*const ICounterItem, @ptrCast(self)), Max, Min, Avg, Status);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICounterItem2_Value = Guid.initString("eefcd4e1-ea1c-4435-b7f4-e341ba03b4f9");
pub const IID_ICounterItem2 = &IID_ICounterItem2_Value;
pub const ICounterItem2 = extern struct {
    pub const VTable = extern struct {
        base: ICounterItem.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Visible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Visible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounterItem2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounterItem2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDataAt: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICounterItem2,
                iIndex: i32,
                iWhich: SysmonDataType,
                pVariant: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICounterItem2,
                iIndex: i32,
                iWhich: SysmonDataType,
                pVariant: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ICounterItem.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem2_put_Selected(self: *const T, bState: i16) HRESULT {
                return @as(*const ICounterItem2.VTable, @ptrCast(self.vtable)).put_Selected(@as(*const ICounterItem2, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem2_get_Selected(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ICounterItem2.VTable, @ptrCast(self.vtable)).get_Selected(@as(*const ICounterItem2, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem2_put_Visible(self: *const T, bState: i16) HRESULT {
                return @as(*const ICounterItem2.VTable, @ptrCast(self.vtable)).put_Visible(@as(*const ICounterItem2, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem2_get_Visible(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ICounterItem2.VTable, @ptrCast(self.vtable)).get_Visible(@as(*const ICounterItem2, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounterItem2_GetDataAt(self: *const T, iIndex: i32, iWhich: SysmonDataType, pVariant: ?*VARIANT) HRESULT {
                return @as(*const ICounterItem2.VTable, @ptrCast(self.vtable)).GetDataAt(@as(*const ICounterItem2, @ptrCast(self)), iIndex, iWhich, pVariant);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID__ICounterItemUnion_Value = Guid.initString("de1a6b74-9182-4c41-8e2c-24c2cd30ee83");
pub const IID__ICounterItemUnion = &IID__ICounterItemUnion_Value;
pub const _ICounterItemUnion = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Value: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                pdblValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                pdblValue: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Color: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Color: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Width: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                iWidth: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                iWidth: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Width: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LineStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                iLineStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                iLineStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LineStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ScaleFactor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                iScale: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                iScale: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScaleFactor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Path: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                Value: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ICounterItemUnion,
                Value: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatistics: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                Max: ?*f64,
                Min: ?*f64,
                Avg: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ICounterItemUnion,
                Max: ?*f64,
                Min: ?*f64,
                Avg: ?*f64,
                Status: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Selected: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Visible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Visible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ICounterItemUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDataAt: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ICounterItemUnion,
                iIndex: i32,
                iWhich: SysmonDataType,
                pVariant: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ICounterItemUnion,
                iIndex: i32,
                iWhich: SysmonDataType,
                pVariant: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Value(self: *const T, pdblValue: ?*f64) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Value(@as(*const _ICounterItemUnion, @ptrCast(self)), pdblValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_Color(self: *const T, Color: u32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_Color(@as(*const _ICounterItemUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Color(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Color(@as(*const _ICounterItemUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_Width(self: *const T, iWidth: i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_Width(@as(*const _ICounterItemUnion, @ptrCast(self)), iWidth);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Width(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Width(@as(*const _ICounterItemUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_LineStyle(self: *const T, iLineStyle: i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_LineStyle(@as(*const _ICounterItemUnion, @ptrCast(self)), iLineStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_LineStyle(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_LineStyle(@as(*const _ICounterItemUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_ScaleFactor(self: *const T, iScale: i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_ScaleFactor(@as(*const _ICounterItemUnion, @ptrCast(self)), iScale);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_ScaleFactor(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_ScaleFactor(@as(*const _ICounterItemUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Path(self: *const T, pstrValue: ?*?BSTR) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Path(@as(*const _ICounterItemUnion, @ptrCast(self)), pstrValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_GetValue(self: *const T, Value: ?*f64, Status: ?*i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).GetValue(@as(*const _ICounterItemUnion, @ptrCast(self)), Value, Status);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_GetStatistics(self: *const T, Max: ?*f64, Min: ?*f64, Avg: ?*f64, Status: ?*i32) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).GetStatistics(@as(*const _ICounterItemUnion, @ptrCast(self)), Max, Min, Avg, Status);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_Selected(self: *const T, bState: i16) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_Selected(@as(*const _ICounterItemUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Selected(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Selected(@as(*const _ICounterItemUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_put_Visible(self: *const T, bState: i16) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).put_Visible(@as(*const _ICounterItemUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_get_Visible(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).get_Visible(@as(*const _ICounterItemUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ICounterItemUnion_GetDataAt(self: *const T, iIndex: i32, iWhich: SysmonDataType, pVariant: ?*VARIANT) HRESULT {
                return @as(*const _ICounterItemUnion.VTable, @ptrCast(self.vtable)).GetDataAt(@as(*const _ICounterItemUnion, @ptrCast(self)), iIndex, iWhich, pVariant);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_DICounterItem_Value = Guid.initString("c08c4ff2-0e2e-11cf-942c-008029004347");
pub const IID_DICounterItem = &IID_DICounterItem_Value;
pub const DICounterItem = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ICounters_Value = Guid.initString("79167962-28fc-11cf-942f-008029004347");
pub const IID_ICounters = &IID_ICounters_Value;
pub const ICounters = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounters,
                pLong: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounters,
                pLong: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounters,
                ppIunk: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounters,
                ppIunk: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ICounters,
                index: VARIANT,
                ppI: ?*?*DICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ICounters,
                index: VARIANT,
                ppI: ?*?*DICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICounters,
                pathname: ?BSTR,
                ppI: ?*?*DICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICounters,
                pathname: ?BSTR,
                ppI: ?*?*DICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICounters,
                index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICounters,
                index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounters_get_Count(self: *const T, pLong: ?*i32) HRESULT {
                return @as(*const ICounters.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ICounters, @ptrCast(self)), pLong);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounters_get__NewEnum(self: *const T, ppIunk: ?*?*IUnknown) HRESULT {
                return @as(*const ICounters.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ICounters, @ptrCast(self)), ppIunk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounters_get_Item(self: *const T, index: VARIANT, ppI: ?*?*DICounterItem) HRESULT {
                return @as(*const ICounters.VTable, @ptrCast(self.vtable)).get_Item(@as(*const ICounters, @ptrCast(self)), index, ppI);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounters_Add(self: *const T, pathname: ?BSTR, ppI: ?*?*DICounterItem) HRESULT {
                return @as(*const ICounters.VTable, @ptrCast(self.vtable)).Add(@as(*const ICounters, @ptrCast(self)), pathname, ppI);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICounters_Remove(self: *const T, index: VARIANT) HRESULT {
                return @as(*const ICounters.VTable, @ptrCast(self.vtable)).Remove(@as(*const ICounters, @ptrCast(self)), index);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ILogFileItem_Value = Guid.initString("d6b518dd-05c7-418a-89e6-4f9ce8c6841e");
pub const IID_ILogFileItem = &IID_ILogFileItem_Value;
pub const ILogFileItem = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Path: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ILogFileItem,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ILogFileItem,
                pstrValue: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFileItem_get_Path(self: *const T, pstrValue: ?*?BSTR) HRESULT {
                return @as(*const ILogFileItem.VTable, @ptrCast(self.vtable)).get_Path(@as(*const ILogFileItem, @ptrCast(self)), pstrValue);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_DILogFileItem_Value = Guid.initString("8d093ffc-f777-4917-82d1-833fbc54c58f");
pub const IID_DILogFileItem = &IID_DILogFileItem_Value;
pub const DILogFileItem = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ILogFiles_Value = Guid.initString("6a2a97e6-6851-41ea-87ad-2a8225335865");
pub const IID_ILogFiles = &IID_ILogFiles_Value;
pub const ILogFiles = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Count: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ILogFiles,
                pLong: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ILogFiles,
                pLong: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get__NewEnum: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ILogFiles,
                ppIunk: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ILogFiles,
                ppIunk: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Item: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ILogFiles,
                index: VARIANT,
                ppI: ?*?*DILogFileItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ILogFiles,
                index: VARIANT,
                ppI: ?*?*DILogFileItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ILogFiles,
                pathname: ?BSTR,
                ppI: ?*?*DILogFileItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ILogFiles,
                pathname: ?BSTR,
                ppI: ?*?*DILogFileItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ILogFiles,
                index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ILogFiles,
                index: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFiles_get_Count(self: *const T, pLong: ?*i32) HRESULT {
                return @as(*const ILogFiles.VTable, @ptrCast(self.vtable)).get_Count(@as(*const ILogFiles, @ptrCast(self)), pLong);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFiles_get__NewEnum(self: *const T, ppIunk: ?*?*IUnknown) HRESULT {
                return @as(*const ILogFiles.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const ILogFiles, @ptrCast(self)), ppIunk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFiles_get_Item(self: *const T, index: VARIANT, ppI: ?*?*DILogFileItem) HRESULT {
                return @as(*const ILogFiles.VTable, @ptrCast(self.vtable)).get_Item(@as(*const ILogFiles, @ptrCast(self)), index, ppI);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFiles_Add(self: *const T, pathname: ?BSTR, ppI: ?*?*DILogFileItem) HRESULT {
                return @as(*const ILogFiles.VTable, @ptrCast(self.vtable)).Add(@as(*const ILogFiles, @ptrCast(self)), pathname, ppI);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ILogFiles_Remove(self: *const T, index: VARIANT) HRESULT {
                return @as(*const ILogFiles.VTable, @ptrCast(self.vtable)).Remove(@as(*const ILogFiles, @ptrCast(self)), index);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ISystemMonitor_Value = Guid.initString("194eb241-c32c-11cf-9398-00aa00a3ddea");
pub const IID_ISystemMonitor = &IID_ISystemMonitor_Value;
pub const ISystemMonitor = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Appearance: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iAppearance: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iAppearance: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Appearance: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iAppearance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iAppearance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BackColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BorderStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iBorderStyle: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iBorderStyle: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BorderStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iBorderStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iBorderStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ForeColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ForeColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Font: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                ppFont: ?*?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                ppFont: ?*?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        putref_Font: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
                pFont: ?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
                pFont: ?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Counters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                ppICounters: ?*?*ICounters,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                ppICounters: ?*?*ICounters,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowVerticalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowVerticalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowHorizontalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowHorizontalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowLegend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowLegend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowScaleLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowScaleLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowValueBar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowValueBar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MaximumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaximumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MinimumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinimumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UpdateInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                fValue: f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                fValue: f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UpdateInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pfValue: ?*f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pfValue: ?*f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                eDisplayType: DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                eDisplayType: DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                peDisplayType: ?*DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                peDisplayType: ?*DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ManualUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ManualUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GraphTitle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GraphTitle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_YAxisLabel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_YAxisLabel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CollectSample: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UpdateGraph: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        BrowseCounters: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DisplayProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Counter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
                iIndex: i32,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
                iIndex: i32,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddCounter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsPath: ?BSTR,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
                bsPath: ?BSTR,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteCounter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
                pCtr: ?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
                pCtr: ?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackColorCtl: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BackColorCtl: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsFileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsFileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogViewStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                StartTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                StartTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogViewStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                StartTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                StartTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogViewStop: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogViewStop: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GridColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GridColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TimeBarColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TimeBarColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Highlight: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Highlight: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowToolbar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowToolbar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Paste: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Copy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReadOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReadOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReportValueType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                eReportValueType: ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                eReportValueType: ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReportValueType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                peReportValueType: ?*ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                peReportValueType: ?*ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MonitorDuplicateInstances: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MonitorDuplicateInstances: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayFilter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayFilter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFiles: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                ppILogFiles: ?*?*ILogFiles,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                ppILogFiles: ?*?*ILogFiles,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataSourceType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                eDataSourceType: DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                eDataSourceType: DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataSourceType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                peDataSourceType: ?*DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                peDataSourceType: ?*DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SqlDsnName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsSqlDsnName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsSqlDsnName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SqlDsnName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsSqlDsnName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsSqlDsnName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SqlLogSetName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsSqlLogSetName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsSqlLogSetName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SqlLogSetName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor,
                bsSqlLogSetName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor,
                bsSqlLogSetName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_Appearance(self: *const T, iAppearance: ?*i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_Appearance(@as(*const ISystemMonitor, @ptrCast(self)), iAppearance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_Appearance(self: *const T, iAppearance: i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_Appearance(@as(*const ISystemMonitor, @ptrCast(self)), iAppearance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_BackColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_BackColor(@as(*const ISystemMonitor, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_BackColor(self: *const T, Color: u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_BackColor(@as(*const ISystemMonitor, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_BorderStyle(self: *const T, iBorderStyle: ?*i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_BorderStyle(@as(*const ISystemMonitor, @ptrCast(self)), iBorderStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_BorderStyle(self: *const T, iBorderStyle: i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_BorderStyle(@as(*const ISystemMonitor, @ptrCast(self)), iBorderStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ForeColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ForeColor(@as(*const ISystemMonitor, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ForeColor(self: *const T, Color: u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ForeColor(@as(*const ISystemMonitor, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_Font(self: *const T, ppFont: ?*?*IFontDisp) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_Font(@as(*const ISystemMonitor, @ptrCast(self)), ppFont);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_putref_Font(self: *const T, pFont: ?*IFontDisp) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).putref_Font(@as(*const ISystemMonitor, @ptrCast(self)), pFont);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_Counters(self: *const T, ppICounters: ?*?*ICounters) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_Counters(@as(*const ISystemMonitor, @ptrCast(self)), ppICounters);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowVerticalGrid(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowVerticalGrid(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowVerticalGrid(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowVerticalGrid(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowHorizontalGrid(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowHorizontalGrid(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowHorizontalGrid(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowHorizontalGrid(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowLegend(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowLegend(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowLegend(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowLegend(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowScaleLabels(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowScaleLabels(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowScaleLabels(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowScaleLabels(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowValueBar(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowValueBar(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowValueBar(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowValueBar(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_MaximumScale(self: *const T, iValue: i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_MaximumScale(@as(*const ISystemMonitor, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_MaximumScale(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_MaximumScale(@as(*const ISystemMonitor, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_MinimumScale(self: *const T, iValue: i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_MinimumScale(@as(*const ISystemMonitor, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_MinimumScale(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_MinimumScale(@as(*const ISystemMonitor, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_UpdateInterval(self: *const T, fValue: f32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_UpdateInterval(@as(*const ISystemMonitor, @ptrCast(self)), fValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_UpdateInterval(self: *const T, pfValue: ?*f32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_UpdateInterval(@as(*const ISystemMonitor, @ptrCast(self)), pfValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_DisplayType(self: *const T, eDisplayType: DisplayTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_DisplayType(@as(*const ISystemMonitor, @ptrCast(self)), eDisplayType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_DisplayType(self: *const T, peDisplayType: ?*DisplayTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_DisplayType(@as(*const ISystemMonitor, @ptrCast(self)), peDisplayType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ManualUpdate(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ManualUpdate(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ManualUpdate(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ManualUpdate(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_GraphTitle(self: *const T, bsTitle: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_GraphTitle(@as(*const ISystemMonitor, @ptrCast(self)), bsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_GraphTitle(self: *const T, pbsTitle: ?*?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_GraphTitle(@as(*const ISystemMonitor, @ptrCast(self)), pbsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_YAxisLabel(self: *const T, bsTitle: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_YAxisLabel(@as(*const ISystemMonitor, @ptrCast(self)), bsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_YAxisLabel(self: *const T, pbsTitle: ?*?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_YAxisLabel(@as(*const ISystemMonitor, @ptrCast(self)), pbsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_CollectSample(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).CollectSample(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_UpdateGraph(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).UpdateGraph(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_BrowseCounters(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).BrowseCounters(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_DisplayProperties(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).DisplayProperties(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_Counter(self: *const T, iIndex: i32, ppICounter: ?*?*ICounterItem) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).Counter(@as(*const ISystemMonitor, @ptrCast(self)), iIndex, ppICounter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_AddCounter(self: *const T, bsPath: ?BSTR, ppICounter: ?*?*ICounterItem) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).AddCounter(@as(*const ISystemMonitor, @ptrCast(self)), bsPath, ppICounter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_DeleteCounter(self: *const T, pCtr: ?*ICounterItem) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).DeleteCounter(@as(*const ISystemMonitor, @ptrCast(self)), pCtr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_BackColorCtl(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_BackColorCtl(@as(*const ISystemMonitor, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_BackColorCtl(self: *const T, Color: u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_BackColorCtl(@as(*const ISystemMonitor, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_LogFileName(self: *const T, bsFileName: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_LogFileName(@as(*const ISystemMonitor, @ptrCast(self)), bsFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_LogFileName(self: *const T, bsFileName: ?*?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_LogFileName(@as(*const ISystemMonitor, @ptrCast(self)), bsFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_LogViewStart(self: *const T, StartTime: f64) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_LogViewStart(@as(*const ISystemMonitor, @ptrCast(self)), StartTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_LogViewStart(self: *const T, StartTime: ?*f64) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_LogViewStart(@as(*const ISystemMonitor, @ptrCast(self)), StartTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_LogViewStop(self: *const T, StopTime: f64) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_LogViewStop(@as(*const ISystemMonitor, @ptrCast(self)), StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_LogViewStop(self: *const T, StopTime: ?*f64) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_LogViewStop(@as(*const ISystemMonitor, @ptrCast(self)), StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_GridColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_GridColor(@as(*const ISystemMonitor, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_GridColor(self: *const T, Color: u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_GridColor(@as(*const ISystemMonitor, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_TimeBarColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_TimeBarColor(@as(*const ISystemMonitor, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_TimeBarColor(self: *const T, Color: u32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_TimeBarColor(@as(*const ISystemMonitor, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_Highlight(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_Highlight(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_Highlight(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_Highlight(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ShowToolbar(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ShowToolbar(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ShowToolbar(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ShowToolbar(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_Paste(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).Paste(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_Copy(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).Copy(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_Reset(self: *const T) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).Reset(@as(*const ISystemMonitor, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ReadOnly(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ReadOnly(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ReadOnly(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ReadOnly(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_ReportValueType(self: *const T, eReportValueType: ReportValueTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_ReportValueType(@as(*const ISystemMonitor, @ptrCast(self)), eReportValueType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_ReportValueType(self: *const T, peReportValueType: ?*ReportValueTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_ReportValueType(@as(*const ISystemMonitor, @ptrCast(self)), peReportValueType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_MonitorDuplicateInstances(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_MonitorDuplicateInstances(@as(*const ISystemMonitor, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_MonitorDuplicateInstances(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_MonitorDuplicateInstances(@as(*const ISystemMonitor, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_DisplayFilter(self: *const T, iValue: i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_DisplayFilter(@as(*const ISystemMonitor, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_DisplayFilter(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_DisplayFilter(@as(*const ISystemMonitor, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_LogFiles(self: *const T, ppILogFiles: ?*?*ILogFiles) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_LogFiles(@as(*const ISystemMonitor, @ptrCast(self)), ppILogFiles);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_DataSourceType(self: *const T, eDataSourceType: DataSourceTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_DataSourceType(@as(*const ISystemMonitor, @ptrCast(self)), eDataSourceType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_DataSourceType(self: *const T, peDataSourceType: ?*DataSourceTypeConstants) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_DataSourceType(@as(*const ISystemMonitor, @ptrCast(self)), peDataSourceType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_SqlDsnName(self: *const T, bsSqlDsnName: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_SqlDsnName(@as(*const ISystemMonitor, @ptrCast(self)), bsSqlDsnName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_SqlDsnName(self: *const T, bsSqlDsnName: ?*?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_SqlDsnName(@as(*const ISystemMonitor, @ptrCast(self)), bsSqlDsnName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_put_SqlLogSetName(self: *const T, bsSqlLogSetName: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).put_SqlLogSetName(@as(*const ISystemMonitor, @ptrCast(self)), bsSqlLogSetName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor_get_SqlLogSetName(self: *const T, bsSqlLogSetName: ?*?BSTR) HRESULT {
                return @as(*const ISystemMonitor.VTable, @ptrCast(self.vtable)).get_SqlLogSetName(@as(*const ISystemMonitor, @ptrCast(self)), bsSqlLogSetName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ISystemMonitor2_Value = Guid.initString("08e3206a-5fd2-4fde-a8a5-8cb3b63d2677");
pub const IID_ISystemMonitor2 = &IID_ISystemMonitor2_Value;
pub const ISystemMonitor2 = extern struct {
    pub const VTable = extern struct {
        base: ISystemMonitor.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableDigitGrouping: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableDigitGrouping: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableToolTips: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableToolTips: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowTimeAxisLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowTimeAxisLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ChartScroll: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bScroll: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                bScroll: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ChartScroll: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pbScroll: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pbScroll: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataPointCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                iNewCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                iNewCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataPointCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                piDataPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                piDataPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ScaleToFit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bSelectedCountersOnly: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                bSelectedCountersOnly: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SaveAs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Relog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
                iFilter: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
                iFilter: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ClearData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogSourceStartTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogSourceStopTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const ISystemMonitor2,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const ISystemMonitor2,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetLogViewRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                StartTime: f64,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                StartTime: f64,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLogViewRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                StartTime: ?*f64,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                StartTime: ?*f64,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        BatchingLock: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                fLock: i16,
                eBatchReason: SysmonBatchReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                fLock: i16,
                eBatchReason: SysmonBatchReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LoadSettings: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitor2,
                bstrSettingFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ISystemMonitor2,
                bstrSettingFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace ISystemMonitor.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_put_EnableDigitGrouping(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).put_EnableDigitGrouping(@as(*const ISystemMonitor2, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_EnableDigitGrouping(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_EnableDigitGrouping(@as(*const ISystemMonitor2, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_put_EnableToolTips(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).put_EnableToolTips(@as(*const ISystemMonitor2, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_EnableToolTips(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_EnableToolTips(@as(*const ISystemMonitor2, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_put_ShowTimeAxisLabels(self: *const T, bState: i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).put_ShowTimeAxisLabels(@as(*const ISystemMonitor2, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_ShowTimeAxisLabels(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_ShowTimeAxisLabels(@as(*const ISystemMonitor2, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_put_ChartScroll(self: *const T, bScroll: i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).put_ChartScroll(@as(*const ISystemMonitor2, @ptrCast(self)), bScroll);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_ChartScroll(self: *const T, pbScroll: ?*i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_ChartScroll(@as(*const ISystemMonitor2, @ptrCast(self)), pbScroll);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_put_DataPointCount(self: *const T, iNewCount: i32) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).put_DataPointCount(@as(*const ISystemMonitor2, @ptrCast(self)), iNewCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_DataPointCount(self: *const T, piDataPointCount: ?*i32) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_DataPointCount(@as(*const ISystemMonitor2, @ptrCast(self)), piDataPointCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_ScaleToFit(self: *const T, bSelectedCountersOnly: i16) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).ScaleToFit(@as(*const ISystemMonitor2, @ptrCast(self)), bSelectedCountersOnly);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_SaveAs(self: *const T, bstrFileName: ?BSTR, eSysmonFileType: SysmonFileType) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).SaveAs(@as(*const ISystemMonitor2, @ptrCast(self)), bstrFileName, eSysmonFileType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_Relog(self: *const T, bstrFileName: ?BSTR, eSysmonFileType: SysmonFileType, iFilter: i32) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).Relog(@as(*const ISystemMonitor2, @ptrCast(self)), bstrFileName, eSysmonFileType, iFilter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_ClearData(self: *const T) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).ClearData(@as(*const ISystemMonitor2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_LogSourceStartTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_LogSourceStartTime(@as(*const ISystemMonitor2, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_get_LogSourceStopTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).get_LogSourceStopTime(@as(*const ISystemMonitor2, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_SetLogViewRange(self: *const T, StartTime: f64, StopTime: f64) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).SetLogViewRange(@as(*const ISystemMonitor2, @ptrCast(self)), StartTime, StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_GetLogViewRange(self: *const T, StartTime: ?*f64, StopTime: ?*f64) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).GetLogViewRange(@as(*const ISystemMonitor2, @ptrCast(self)), StartTime, StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_BatchingLock(self: *const T, fLock: i16, eBatchReason: SysmonBatchReason) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).BatchingLock(@as(*const ISystemMonitor2, @ptrCast(self)), fLock, eBatchReason);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitor2_LoadSettings(self: *const T, bstrSettingFileName: ?BSTR) HRESULT {
                return @as(*const ISystemMonitor2.VTable, @ptrCast(self.vtable)).LoadSettings(@as(*const ISystemMonitor2, @ptrCast(self)), bstrSettingFileName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID__ISystemMonitorUnion_Value = Guid.initString("c8a77338-265f-4de5-aa25-c7da1ce5a8f4");
pub const IID__ISystemMonitorUnion = &IID__ISystemMonitorUnion_Value;
pub const _ISystemMonitorUnion = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Appearance: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iAppearance: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iAppearance: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Appearance: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iAppearance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iAppearance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BackColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BorderStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iBorderStyle: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iBorderStyle: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BorderStyle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iBorderStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iBorderStyle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ForeColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ForeColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Font: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                ppFont: ?*?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                ppFont: ?*?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        putref_Font: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pFont: ?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pFont: ?*IFontDisp,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Counters: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                ppICounters: ?*?*ICounters,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                ppICounters: ?*?*ICounters,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowVerticalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowVerticalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowHorizontalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowHorizontalGrid: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowLegend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowLegend: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowScaleLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowScaleLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowValueBar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowValueBar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MaximumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MaximumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MinimumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinimumScale: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UpdateInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                fValue: f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                fValue: f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UpdateInterval: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pfValue: ?*f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pfValue: ?*f32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                eDisplayType: DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                eDisplayType: DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                peDisplayType: ?*DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                peDisplayType: ?*DisplayTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ManualUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ManualUpdate: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GraphTitle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GraphTitle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_YAxisLabel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_YAxisLabel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbsTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CollectSample: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UpdateGraph: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        BrowseCounters: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DisplayProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Counter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iIndex: i32,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iIndex: i32,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddCounter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsPath: ?BSTR,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsPath: ?BSTR,
                ppICounter: ?*?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteCounter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pCtr: ?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pCtr: ?*ICounterItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BackColorCtl: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BackColorCtl: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFileName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsFileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsFileName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogViewStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StartTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StartTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogViewStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StartTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StartTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogViewStop: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogViewStop: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GridColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GridColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TimeBarColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pColor: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TimeBarColor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                Color: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Highlight: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Highlight: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowToolbar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowToolbar: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Paste: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Copy: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReadOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReadOnly: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReportValueType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                eReportValueType: ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                eReportValueType: ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReportValueType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                peReportValueType: ?*ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                peReportValueType: ?*ReportValueTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_MonitorDuplicateInstances: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MonitorDuplicateInstances: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DisplayFilter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iValue: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DisplayFilter: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                piValue: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogFiles: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                ppILogFiles: ?*?*ILogFiles,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                ppILogFiles: ?*?*ILogFiles,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataSourceType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                eDataSourceType: DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                eDataSourceType: DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataSourceType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                peDataSourceType: ?*DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                peDataSourceType: ?*DataSourceTypeConstants,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SqlDsnName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsSqlDsnName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsSqlDsnName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SqlDsnName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsSqlDsnName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsSqlDsnName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SqlLogSetName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsSqlLogSetName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsSqlLogSetName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SqlLogSetName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bsSqlLogSetName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bsSqlLogSetName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableDigitGrouping: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableDigitGrouping: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_EnableToolTips: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EnableToolTips: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ShowTimeAxisLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bState: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ShowTimeAxisLabels: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbState: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ChartScroll: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bScroll: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bScroll: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ChartScroll: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pbScroll: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pbScroll: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DataPointCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                iNewCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                iNewCount: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DataPointCount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                piDataPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                piDataPointCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ScaleToFit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bSelectedCountersOnly: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bSelectedCountersOnly: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SaveAs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Relog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
                iFilter: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bstrFileName: ?BSTR,
                eSysmonFileType: SysmonFileType,
                iFilter: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ClearData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogSourceStartTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogSourceStopTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                pDate: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetLogViewRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StartTime: f64,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StartTime: f64,
                StopTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLogViewRange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                StartTime: ?*f64,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                StartTime: ?*f64,
                StopTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        BatchingLock: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                fLock: i16,
                eBatchReason: SysmonBatchReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                fLock: i16,
                eBatchReason: SysmonBatchReason,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LoadSettings: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _ISystemMonitorUnion,
                bstrSettingFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _ISystemMonitorUnion,
                bstrSettingFileName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_Appearance(self: *const T, iAppearance: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_Appearance(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iAppearance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_Appearance(self: *const T, iAppearance: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_Appearance(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iAppearance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_BackColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_BackColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_BackColor(self: *const T, Color: u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_BackColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_BorderStyle(self: *const T, iBorderStyle: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_BorderStyle(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iBorderStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_BorderStyle(self: *const T, iBorderStyle: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_BorderStyle(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iBorderStyle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ForeColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ForeColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ForeColor(self: *const T, Color: u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ForeColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_Font(self: *const T, ppFont: ?*?*IFontDisp) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_Font(@as(*const _ISystemMonitorUnion, @ptrCast(self)), ppFont);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_putref_Font(self: *const T, pFont: ?*IFontDisp) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).putref_Font(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pFont);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_Counters(self: *const T, ppICounters: ?*?*ICounters) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_Counters(@as(*const _ISystemMonitorUnion, @ptrCast(self)), ppICounters);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowVerticalGrid(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowVerticalGrid(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowVerticalGrid(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowVerticalGrid(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowHorizontalGrid(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowHorizontalGrid(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowHorizontalGrid(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowHorizontalGrid(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowLegend(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowLegend(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowLegend(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowLegend(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowScaleLabels(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowScaleLabels(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowScaleLabels(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowScaleLabels(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowValueBar(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowValueBar(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowValueBar(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowValueBar(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_MaximumScale(self: *const T, iValue: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_MaximumScale(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_MaximumScale(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_MaximumScale(@as(*const _ISystemMonitorUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_MinimumScale(self: *const T, iValue: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_MinimumScale(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_MinimumScale(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_MinimumScale(@as(*const _ISystemMonitorUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_UpdateInterval(self: *const T, fValue: f32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_UpdateInterval(@as(*const _ISystemMonitorUnion, @ptrCast(self)), fValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_UpdateInterval(self: *const T, pfValue: ?*f32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_UpdateInterval(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pfValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_DisplayType(self: *const T, eDisplayType: DisplayTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_DisplayType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), eDisplayType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_DisplayType(self: *const T, peDisplayType: ?*DisplayTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_DisplayType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), peDisplayType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ManualUpdate(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ManualUpdate(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ManualUpdate(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ManualUpdate(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_GraphTitle(self: *const T, bsTitle: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_GraphTitle(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_GraphTitle(self: *const T, pbsTitle: ?*?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_GraphTitle(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_YAxisLabel(self: *const T, bsTitle: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_YAxisLabel(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_YAxisLabel(self: *const T, pbsTitle: ?*?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_YAxisLabel(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbsTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_CollectSample(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).CollectSample(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_UpdateGraph(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).UpdateGraph(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_BrowseCounters(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).BrowseCounters(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_DisplayProperties(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).DisplayProperties(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_Counter(self: *const T, iIndex: i32, ppICounter: ?*?*ICounterItem) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).Counter(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iIndex, ppICounter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_AddCounter(self: *const T, bsPath: ?BSTR, ppICounter: ?*?*ICounterItem) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).AddCounter(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsPath, ppICounter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_DeleteCounter(self: *const T, pCtr: ?*ICounterItem) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).DeleteCounter(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pCtr);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_BackColorCtl(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_BackColorCtl(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_BackColorCtl(self: *const T, Color: u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_BackColorCtl(@as(*const _ISystemMonitorUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_LogFileName(self: *const T, bsFileName: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_LogFileName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogFileName(self: *const T, bsFileName: ?*?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogFileName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsFileName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_LogViewStart(self: *const T, StartTime: f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_LogViewStart(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StartTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogViewStart(self: *const T, StartTime: ?*f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogViewStart(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StartTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_LogViewStop(self: *const T, StopTime: f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_LogViewStop(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogViewStop(self: *const T, StopTime: ?*f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogViewStop(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_GridColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_GridColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_GridColor(self: *const T, Color: u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_GridColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_TimeBarColor(self: *const T, pColor: ?*u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_TimeBarColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pColor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_TimeBarColor(self: *const T, Color: u32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_TimeBarColor(@as(*const _ISystemMonitorUnion, @ptrCast(self)), Color);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_Highlight(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_Highlight(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_Highlight(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_Highlight(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowToolbar(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowToolbar(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowToolbar(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowToolbar(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_Paste(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).Paste(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_Copy(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).Copy(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_Reset(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).Reset(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ReadOnly(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ReadOnly(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ReadOnly(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ReadOnly(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ReportValueType(self: *const T, eReportValueType: ReportValueTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ReportValueType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), eReportValueType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ReportValueType(self: *const T, peReportValueType: ?*ReportValueTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ReportValueType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), peReportValueType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_MonitorDuplicateInstances(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_MonitorDuplicateInstances(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_MonitorDuplicateInstances(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_MonitorDuplicateInstances(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_DisplayFilter(self: *const T, iValue: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_DisplayFilter(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_DisplayFilter(self: *const T, piValue: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_DisplayFilter(@as(*const _ISystemMonitorUnion, @ptrCast(self)), piValue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogFiles(self: *const T, ppILogFiles: ?*?*ILogFiles) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogFiles(@as(*const _ISystemMonitorUnion, @ptrCast(self)), ppILogFiles);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_DataSourceType(self: *const T, eDataSourceType: DataSourceTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_DataSourceType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), eDataSourceType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_DataSourceType(self: *const T, peDataSourceType: ?*DataSourceTypeConstants) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_DataSourceType(@as(*const _ISystemMonitorUnion, @ptrCast(self)), peDataSourceType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_SqlDsnName(self: *const T, bsSqlDsnName: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_SqlDsnName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsSqlDsnName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_SqlDsnName(self: *const T, bsSqlDsnName: ?*?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_SqlDsnName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsSqlDsnName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_SqlLogSetName(self: *const T, bsSqlLogSetName: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_SqlLogSetName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsSqlLogSetName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_SqlLogSetName(self: *const T, bsSqlLogSetName: ?*?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_SqlLogSetName(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bsSqlLogSetName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_EnableDigitGrouping(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_EnableDigitGrouping(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_EnableDigitGrouping(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_EnableDigitGrouping(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_EnableToolTips(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_EnableToolTips(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_EnableToolTips(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_EnableToolTips(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ShowTimeAxisLabels(self: *const T, bState: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ShowTimeAxisLabels(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ShowTimeAxisLabels(self: *const T, pbState: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ShowTimeAxisLabels(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_ChartScroll(self: *const T, bScroll: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_ChartScroll(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bScroll);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_ChartScroll(self: *const T, pbScroll: ?*i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_ChartScroll(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pbScroll);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_put_DataPointCount(self: *const T, iNewCount: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).put_DataPointCount(@as(*const _ISystemMonitorUnion, @ptrCast(self)), iNewCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_DataPointCount(self: *const T, piDataPointCount: ?*i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_DataPointCount(@as(*const _ISystemMonitorUnion, @ptrCast(self)), piDataPointCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_ScaleToFit(self: *const T, bSelectedCountersOnly: i16) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).ScaleToFit(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bSelectedCountersOnly);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_SaveAs(self: *const T, bstrFileName: ?BSTR, eSysmonFileType: SysmonFileType) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).SaveAs(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bstrFileName, eSysmonFileType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_Relog(self: *const T, bstrFileName: ?BSTR, eSysmonFileType: SysmonFileType, iFilter: i32) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).Relog(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bstrFileName, eSysmonFileType, iFilter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_ClearData(self: *const T) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).ClearData(@as(*const _ISystemMonitorUnion, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogSourceStartTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogSourceStartTime(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_get_LogSourceStopTime(self: *const T, pDate: ?*f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).get_LogSourceStopTime(@as(*const _ISystemMonitorUnion, @ptrCast(self)), pDate);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_SetLogViewRange(self: *const T, StartTime: f64, StopTime: f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).SetLogViewRange(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StartTime, StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_GetLogViewRange(self: *const T, StartTime: ?*f64, StopTime: ?*f64) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).GetLogViewRange(@as(*const _ISystemMonitorUnion, @ptrCast(self)), StartTime, StopTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_BatchingLock(self: *const T, fLock: i16, eBatchReason: SysmonBatchReason) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).BatchingLock(@as(*const _ISystemMonitorUnion, @ptrCast(self)), fLock, eBatchReason);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _ISystemMonitorUnion_LoadSettings(self: *const T, bstrSettingFileName: ?BSTR) HRESULT {
                return @as(*const _ISystemMonitorUnion.VTable, @ptrCast(self.vtable)).LoadSettings(@as(*const _ISystemMonitorUnion, @ptrCast(self)), bstrSettingFileName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_DISystemMonitor_Value = Guid.initString("13d73d81-c32e-11cf-9398-00aa00a3ddea");
pub const IID_DISystemMonitor = &IID_DISystemMonitor_Value;
pub const DISystemMonitor = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_DISystemMonitorInternal_Value = Guid.initString("194eb242-c32c-11cf-9398-00aa00a3ddea");
pub const IID_DISystemMonitorInternal = &IID_DISystemMonitorInternal_Value;
pub const DISystemMonitorInternal = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_ISystemMonitorEvents_Value = Guid.initString("ee660ea0-4abd-11cf-943a-008029004347");
pub const IID_ISystemMonitorEvents = &IID_ISystemMonitorEvents_Value;
pub const ISystemMonitorEvents = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        OnCounterSelected: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
            else => *const fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
        },
        OnCounterAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
            else => *const fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
        },
        OnCounterDeleted: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
            else => *const fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
        },
        OnSampleCollected: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitorEvents,
            ) callconv(@import("std").os.windows.WINAPI) void,
            else => *const fn (
                self: *const ISystemMonitorEvents,
            ) callconv(@import("std").os.windows.WINAPI) void,
        },
        OnDblClick: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
            else => *const fn (
                self: *const ISystemMonitorEvents,
                Index: i32,
            ) callconv(@import("std").os.windows.WINAPI) void,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitorEvents_OnCounterSelected(self: *const T, Index: i32) void {
                return @as(*const ISystemMonitorEvents.VTable, @ptrCast(self.vtable)).OnCounterSelected(@as(*const ISystemMonitorEvents, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitorEvents_OnCounterAdded(self: *const T, Index: i32) void {
                return @as(*const ISystemMonitorEvents.VTable, @ptrCast(self.vtable)).OnCounterAdded(@as(*const ISystemMonitorEvents, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitorEvents_OnCounterDeleted(self: *const T, Index: i32) void {
                return @as(*const ISystemMonitorEvents.VTable, @ptrCast(self.vtable)).OnCounterDeleted(@as(*const ISystemMonitorEvents, @ptrCast(self)), Index);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitorEvents_OnSampleCollected(self: *const T) void {
                return @as(*const ISystemMonitorEvents.VTable, @ptrCast(self.vtable)).OnSampleCollected(@as(*const ISystemMonitorEvents, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ISystemMonitorEvents_OnDblClick(self: *const T, Index: i32) void {
                return @as(*const ISystemMonitorEvents.VTable, @ptrCast(self.vtable)).OnDblClick(@as(*const ISystemMonitorEvents, @ptrCast(self)), Index);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_DISystemMonitorEvents_Value = Guid.initString("84979930-4ab3-11cf-943a-008029004347");
pub const IID_DISystemMonitorEvents = &IID_DISystemMonitorEvents_Value;
pub const DISystemMonitorEvents = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IDispatch.MethodMixin(T);
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const PERF_OBJECT_TYPE = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        TotalByteLength: u32,
        DefinitionLength: u32,
        HeaderLength: u32,
        ObjectNameTitleIndex: u32,
        ObjectNameTitle: u32,
        ObjectHelpTitleIndex: u32,
        ObjectHelpTitle: u32,
        DetailLevel: u32,
        NumCounters: u32,
        DefaultCounter: i32,
        NumInstances: i32,
        CodePage: u32,
        PerfTime: LARGE_INTEGER,
        PerfFreq: LARGE_INTEGER,
    },
    .X86 => extern struct {
        TotalByteLength: u32,
        DefinitionLength: u32,
        HeaderLength: u32,
        ObjectNameTitleIndex: u32,
        ObjectNameTitle: ?PWSTR,
        ObjectHelpTitleIndex: u32,
        ObjectHelpTitle: ?PWSTR,
        DetailLevel: u32,
        NumCounters: u32,
        DefaultCounter: i32,
        NumInstances: i32,
        CodePage: u32,
        PerfTime: LARGE_INTEGER,
        PerfFreq: LARGE_INTEGER,
    },
};
pub const PERF_COUNTER_DEFINITION = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        ByteLength: u32,
        CounterNameTitleIndex: u32,
        CounterNameTitle: u32,
        CounterHelpTitleIndex: u32,
        CounterHelpTitle: u32,
        DefaultScale: i32,
        DetailLevel: u32,
        CounterType: u32,
        CounterSize: u32,
        CounterOffset: u32,
    },
    .X86 => extern struct {
        ByteLength: u32,
        CounterNameTitleIndex: u32,
        CounterNameTitle: ?PWSTR,
        CounterHelpTitleIndex: u32,
        CounterHelpTitle: ?PWSTR,
        DefaultScale: i32,
        DetailLevel: u32,
        CounterType: u32,
        CounterSize: u32,
        CounterOffset: u32,
    },
};

//--------------------------------------------------------------------------------
// Section: Functions (135)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows5.0'
pub extern "kernel32" fn QueryPerformanceCounter(
    lpPerformanceCount: ?*LARGE_INTEGER,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "kernel32" fn QueryPerformanceFrequency(
    lpFrequency: ?*LARGE_INTEGER,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "loadperf" fn InstallPerfDllW(
    szComputerName: ?[*:0]const u16,
    lpIniFile: ?[*:0]const u16,
    dwFlags: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn InstallPerfDllA(
    szComputerName: ?[*:0]const u8,
    lpIniFile: ?[*:0]const u8,
    dwFlags: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "loadperf" fn LoadPerfCounterTextStringsA(
    lpCommandLine: ?PSTR,
    bQuietModeArg: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "loadperf" fn LoadPerfCounterTextStringsW(
    lpCommandLine: ?PWSTR,
    bQuietModeArg: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "loadperf" fn UnloadPerfCounterTextStringsW(
    lpCommandLine: ?PWSTR,
    bQuietModeArg: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "loadperf" fn UnloadPerfCounterTextStringsA(
    lpCommandLine: ?PSTR,
    bQuietModeArg: BOOL,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn UpdatePerfNameFilesA(
    szNewCtrFilePath: ?[*:0]const u8,
    szNewHlpFilePath: ?[*:0]const u8,
    szLanguageID: ?PSTR,
    dwFlags: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn UpdatePerfNameFilesW(
    szNewCtrFilePath: ?[*:0]const u16,
    szNewHlpFilePath: ?[*:0]const u16,
    szLanguageID: ?PWSTR,
    dwFlags: usize,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn SetServiceAsTrustedA(
    szReserved: ?[*:0]const u8,
    szServiceName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn SetServiceAsTrustedW(
    szReserved: ?[*:0]const u16,
    szServiceName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn BackupPerfRegistryToFileW(
    szFileName: ?[*:0]const u16,
    szCommentString: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "loadperf" fn RestorePerfRegistryFromFileW(
    szFileName: ?[*:0]const u16,
    szLangId: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfStartProvider(
    ProviderGuid: ?*Guid,
    ControlCallback: ?PERFLIBREQUEST,
    phProvider: ?*PerfProviderHandle,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfStartProviderEx(
    ProviderGuid: ?*Guid,
    ProviderContext: ?*PERF_PROVIDER_CONTEXT,
    Provider: ?*PerfProviderHandle,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfStopProvider(
    ProviderHandle: PerfProviderHandle,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfSetCounterSetInfo(
    ProviderHandle: ?HANDLE,
    // TODO: what to do with BytesParamIndex 2?
    Template: ?*PERF_COUNTERSET_INFO,
    TemplateSize: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfCreateInstance(
    ProviderHandle: PerfProviderHandle,
    CounterSetGuid: ?*const Guid,
    Name: ?[*:0]const u16,
    Id: u32,
) callconv(@import("std").os.windows.WINAPI) ?*PERF_COUNTERSET_INSTANCE;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfDeleteInstance(
    Provider: PerfProviderHandle,
    InstanceBlock: ?*PERF_COUNTERSET_INSTANCE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfQueryInstance(
    ProviderHandle: ?HANDLE,
    CounterSetGuid: ?*const Guid,
    Name: ?[*:0]const u16,
    Id: u32,
) callconv(@import("std").os.windows.WINAPI) ?*PERF_COUNTERSET_INSTANCE;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfSetCounterRefValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Address: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfSetULongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfSetULongLongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u64,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfIncrementULongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfIncrementULongLongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u64,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfDecrementULongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "advapi32" fn PerfDecrementULongLongCounterValue(
    Provider: ?HANDLE,
    Instance: ?*PERF_COUNTERSET_INSTANCE,
    CounterId: u32,
    Value: u64,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfEnumerateCounterSet(
    szMachine: ?[*:0]const u16,
    pCounterSetIds: ?[*]Guid,
    cCounterSetIds: u32,
    pcCounterSetIdsActual: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfEnumerateCounterSetInstances(
    szMachine: ?[*:0]const u16,
    pCounterSetId: ?*const Guid,
    // TODO: what to do with BytesParamIndex 3?
    pInstances: ?*PERF_INSTANCE_HEADER,
    cbInstances: u32,
    pcbInstancesActual: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfQueryCounterSetRegistrationInfo(
    szMachine: ?[*:0]const u16,
    pCounterSetId: ?*const Guid,
    requestCode: PerfRegInfoType,
    requestLangId: u32,
    // TODO: what to do with BytesParamIndex 5?
    pbRegInfo: ?*u8,
    cbRegInfo: u32,
    pcbRegInfoActual: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfOpenQueryHandle(
    szMachine: ?[*:0]const u16,
    phQuery: ?*PerfQueryHandle,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfCloseQueryHandle(
    hQuery: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfQueryCounterInfo(
    hQuery: PerfQueryHandle,
    // TODO: what to do with BytesParamIndex 2?
    pCounters: ?*PERF_COUNTER_IDENTIFIER,
    cbCounters: u32,
    pcbCountersActual: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfQueryCounterData(
    hQuery: PerfQueryHandle,
    // TODO: what to do with BytesParamIndex 2?
    pCounterBlock: ?*PERF_DATA_HEADER,
    cbCounterBlock: u32,
    pcbCounterBlockActual: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfAddCounters(
    hQuery: PerfQueryHandle,
    // TODO: what to do with BytesParamIndex 2?
    pCounters: ?*PERF_COUNTER_IDENTIFIER,
    cbCounters: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows10.0.14393'
pub extern "advapi32" fn PerfDeleteCounters(
    hQuery: PerfQueryHandle,
    // TODO: what to do with BytesParamIndex 2?
    pCounters: ?*PERF_COUNTER_IDENTIFIER,
    cbCounters: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDllVersion(
    lpdwVersion: ?*PDH_DLL_VERSION,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhOpenQueryW(
    szDataSource: ?[*:0]const u16,
    dwUserData: usize,
    phQuery: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhOpenQueryA(
    szDataSource: ?[*:0]const u8,
    dwUserData: usize,
    phQuery: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhAddCounterW(
    hQuery: isize,
    szFullCounterPath: ?[*:0]const u16,
    dwUserData: usize,
    phCounter: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhAddCounterA(
    hQuery: isize,
    szFullCounterPath: ?[*:0]const u8,
    dwUserData: usize,
    phCounter: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "pdh" fn PdhAddEnglishCounterW(
    hQuery: isize,
    szFullCounterPath: ?[*:0]const u16,
    dwUserData: usize,
    phCounter: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "pdh" fn PdhAddEnglishCounterA(
    hQuery: isize,
    szFullCounterPath: ?[*:0]const u8,
    dwUserData: usize,
    phCounter: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "pdh" fn PdhCollectQueryDataWithTime(
    hQuery: isize,
    pllTimeStamp: ?*i64,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "pdh" fn PdhValidatePathExW(
    hDataSource: isize,
    szFullPathBuffer: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "pdh" fn PdhValidatePathExA(
    hDataSource: isize,
    szFullPathBuffer: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhRemoveCounter(
    hCounter: isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhCollectQueryData(
    hQuery: isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhCloseQuery(
    hQuery: isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetFormattedCounterValue(
    hCounter: isize,
    dwFormat: PDH_FMT,
    lpdwType: ?*u32,
    pValue: ?*PDH_FMT_COUNTERVALUE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetFormattedCounterArrayA(
    hCounter: isize,
    dwFormat: PDH_FMT,
    lpdwBufferSize: ?*u32,
    lpdwItemCount: ?*u32,
    ItemBuffer: ?*PDH_FMT_COUNTERVALUE_ITEM_A,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetFormattedCounterArrayW(
    hCounter: isize,
    dwFormat: PDH_FMT,
    lpdwBufferSize: ?*u32,
    lpdwItemCount: ?*u32,
    ItemBuffer: ?*PDH_FMT_COUNTERVALUE_ITEM_W,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetRawCounterValue(
    hCounter: isize,
    lpdwType: ?*u32,
    pValue: ?*PDH_RAW_COUNTER,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetRawCounterArrayA(
    hCounter: isize,
    lpdwBufferSize: ?*u32,
    lpdwItemCount: ?*u32,
    ItemBuffer: ?*PDH_RAW_COUNTER_ITEM_A,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetRawCounterArrayW(
    hCounter: isize,
    lpdwBufferSize: ?*u32,
    lpdwItemCount: ?*u32,
    ItemBuffer: ?*PDH_RAW_COUNTER_ITEM_W,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhCalculateCounterFromRawValue(
    hCounter: isize,
    dwFormat: PDH_FMT,
    rawValue1: ?*PDH_RAW_COUNTER,
    rawValue2: ?*PDH_RAW_COUNTER,
    fmtValue: ?*PDH_FMT_COUNTERVALUE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhComputeCounterStatistics(
    hCounter: isize,
    dwFormat: PDH_FMT,
    dwFirstEntry: u32,
    dwNumEntries: u32,
    lpRawValueArray: ?*PDH_RAW_COUNTER,
    data: ?*PDH_STATISTICS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetCounterInfoW(
    hCounter: isize,
    bRetrieveExplainText: BOOLEAN,
    pdwBufferSize: ?*u32,
    lpBuffer: ?*PDH_COUNTER_INFO_W,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetCounterInfoA(
    hCounter: isize,
    bRetrieveExplainText: BOOLEAN,
    pdwBufferSize: ?*u32,
    lpBuffer: ?*PDH_COUNTER_INFO_A,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhSetCounterScaleFactor(
    hCounter: isize,
    lFactor: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhConnectMachineW(
    szMachineName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhConnectMachineA(
    szMachineName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumMachinesW(
    szDataSource: ?[*:0]const u16,
    mszMachineList: ?[*]u16,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumMachinesA(
    szDataSource: ?[*:0]const u8,
    mszMachineList: ?[*]u8,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectsW(
    szDataSource: ?[*:0]const u16,
    szMachineName: ?[*:0]const u16,
    mszObjectList: ?[*]u16,
    pcchBufferSize: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    bRefresh: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectsA(
    szDataSource: ?[*:0]const u8,
    szMachineName: ?[*:0]const u8,
    mszObjectList: ?[*]u8,
    pcchBufferSize: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    bRefresh: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectItemsW(
    szDataSource: ?[*:0]const u16,
    szMachineName: ?[*:0]const u16,
    szObjectName: ?[*:0]const u16,
    mszCounterList: ?[*]u16,
    pcchCounterListLength: ?*u32,
    mszInstanceList: ?[*]u16,
    pcchInstanceListLength: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectItemsA(
    szDataSource: ?[*:0]const u8,
    szMachineName: ?[*:0]const u8,
    szObjectName: ?[*:0]const u8,
    mszCounterList: ?[*]u8,
    pcchCounterListLength: ?*u32,
    mszInstanceList: ?[*]u8,
    pcchInstanceListLength: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhMakeCounterPathW(
    pCounterPathElements: ?*PDH_COUNTER_PATH_ELEMENTS_W,
    szFullPathBuffer: ?PWSTR,
    pcchBufferSize: ?*u32,
    dwFlags: PDH_PATH_FLAGS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhMakeCounterPathA(
    pCounterPathElements: ?*PDH_COUNTER_PATH_ELEMENTS_A,
    szFullPathBuffer: ?PSTR,
    pcchBufferSize: ?*u32,
    dwFlags: PDH_PATH_FLAGS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhParseCounterPathW(
    szFullPathBuffer: ?[*:0]const u16,
    pCounterPathElements: ?*PDH_COUNTER_PATH_ELEMENTS_W,
    pdwBufferSize: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhParseCounterPathA(
    szFullPathBuffer: ?[*:0]const u8,
    pCounterPathElements: ?*PDH_COUNTER_PATH_ELEMENTS_A,
    pdwBufferSize: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhParseInstanceNameW(
    szInstanceString: ?[*:0]const u16,
    szInstanceName: ?PWSTR,
    pcchInstanceNameLength: ?*u32,
    szParentName: ?PWSTR,
    pcchParentNameLength: ?*u32,
    lpIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhParseInstanceNameA(
    szInstanceString: ?[*:0]const u8,
    szInstanceName: ?PSTR,
    pcchInstanceNameLength: ?*u32,
    szParentName: ?PSTR,
    pcchParentNameLength: ?*u32,
    lpIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhValidatePathW(
    szFullPathBuffer: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhValidatePathA(
    szFullPathBuffer: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfObjectW(
    szDataSource: ?[*:0]const u16,
    szMachineName: ?[*:0]const u16,
    szDefaultObjectName: ?PWSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfObjectA(
    szDataSource: ?[*:0]const u8,
    szMachineName: ?[*:0]const u8,
    szDefaultObjectName: ?PSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfCounterW(
    szDataSource: ?[*:0]const u16,
    szMachineName: ?[*:0]const u16,
    szObjectName: ?[*:0]const u16,
    szDefaultCounterName: ?PWSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfCounterA(
    szDataSource: ?[*:0]const u8,
    szMachineName: ?[*:0]const u8,
    szObjectName: ?[*:0]const u8,
    szDefaultCounterName: ?PSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBrowseCountersW(
    pBrowseDlgData: ?*PDH_BROWSE_DLG_CONFIG_W,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBrowseCountersA(
    pBrowseDlgData: ?*PDH_BROWSE_DLG_CONFIG_A,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandCounterPathW(
    szWildCardPath: ?[*:0]const u16,
    mszExpandedPathList: ?[*]u16,
    pcchPathListLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandCounterPathA(
    szWildCardPath: ?[*:0]const u8,
    mszExpandedPathList: ?[*]u8,
    pcchPathListLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhLookupPerfNameByIndexW(
    szMachineName: ?[*:0]const u16,
    dwNameIndex: u32,
    szNameBuffer: ?PWSTR,
    pcchNameBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhLookupPerfNameByIndexA(
    szMachineName: ?[*:0]const u8,
    dwNameIndex: u32,
    szNameBuffer: ?PSTR,
    pcchNameBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhLookupPerfIndexByNameW(
    szMachineName: ?[*:0]const u16,
    szNameBuffer: ?[*:0]const u16,
    pdwIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhLookupPerfIndexByNameA(
    szMachineName: ?[*:0]const u8,
    szNameBuffer: ?[*:0]const u8,
    pdwIndex: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandWildCardPathA(
    szDataSource: ?[*:0]const u8,
    szWildCardPath: ?[*:0]const u8,
    mszExpandedPathList: ?[*]u8,
    pcchPathListLength: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandWildCardPathW(
    szDataSource: ?[*:0]const u16,
    szWildCardPath: ?[*:0]const u16,
    mszExpandedPathList: ?[*]u16,
    pcchPathListLength: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhOpenLogW(
    szLogFileName: ?[*:0]const u16,
    dwAccessFlags: PDH_LOG,
    lpdwLogType: ?*PDH_LOG_TYPE,
    hQuery: isize,
    dwMaxSize: u32,
    szUserCaption: ?[*:0]const u16,
    phLog: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhOpenLogA(
    szLogFileName: ?[*:0]const u8,
    dwAccessFlags: PDH_LOG,
    lpdwLogType: ?*PDH_LOG_TYPE,
    hQuery: isize,
    dwMaxSize: u32,
    szUserCaption: ?[*:0]const u8,
    phLog: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhUpdateLogW(
    hLog: isize,
    szUserString: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhUpdateLogA(
    hLog: isize,
    szUserString: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhUpdateLogFileCatalog(
    hLog: isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetLogFileSize(
    hLog: isize,
    llSize: ?*i64,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhCloseLog(
    hLog: isize,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhSelectDataSourceW(
    hWndOwner: ?HWND,
    dwFlags: PDH_SELECT_DATA_SOURCE_FLAGS,
    szDataSource: ?PWSTR,
    pcchBufferLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhSelectDataSourceA(
    hWndOwner: ?HWND,
    dwFlags: PDH_SELECT_DATA_SOURCE_FLAGS,
    szDataSource: ?PSTR,
    pcchBufferLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhIsRealTimeQuery(
    hQuery: isize,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhSetQueryTimeRange(
    hQuery: isize,
    pInfo: ?*PDH_TIME_INFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDataSourceTimeRangeW(
    szDataSource: ?[*:0]const u16,
    pdwNumEntries: ?*u32,
    pInfo: ?*PDH_TIME_INFO,
    pdwBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDataSourceTimeRangeA(
    szDataSource: ?[*:0]const u8,
    pdwNumEntries: ?*u32,
    pInfo: ?*PDH_TIME_INFO,
    pdwBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhCollectQueryDataEx(
    hQuery: isize,
    dwIntervalTime: u32,
    hNewDataEvent: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhFormatFromRawValue(
    dwCounterType: u32,
    dwFormat: PDH_FMT,
    pTimeBase: ?*i64,
    pRawValue1: ?*PDH_RAW_COUNTER,
    pRawValue2: ?*PDH_RAW_COUNTER,
    pFmtValue: ?*PDH_FMT_COUNTERVALUE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetCounterTimeBase(
    hCounter: isize,
    pTimeBase: ?*i64,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhReadRawLogRecord(
    hLog: isize,
    ftRecord: FILETIME,
    pRawLogRecord: ?*PDH_RAW_LOG_RECORD,
    pdwBufferLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhSetDefaultRealTimeDataSource(
    dwDataSourceId: REAL_TIME_DATA_SOURCE_ID_FLAGS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBindInputDataSourceW(
    phDataSource: ?*isize,
    LogFileNameList: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBindInputDataSourceA(
    phDataSource: ?*isize,
    LogFileNameList: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhOpenQueryH(
    hDataSource: isize,
    dwUserData: usize,
    phQuery: ?*isize,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumMachinesHW(
    hDataSource: isize,
    mszMachineList: ?[*]u16,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumMachinesHA(
    hDataSource: isize,
    mszMachineList: ?[*]u8,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectsHW(
    hDataSource: isize,
    szMachineName: ?[*:0]const u16,
    mszObjectList: ?[*]u16,
    pcchBufferSize: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    bRefresh: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectsHA(
    hDataSource: isize,
    szMachineName: ?[*:0]const u8,
    mszObjectList: ?[*]u8,
    pcchBufferSize: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    bRefresh: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectItemsHW(
    hDataSource: isize,
    szMachineName: ?[*:0]const u16,
    szObjectName: ?[*:0]const u16,
    mszCounterList: ?[*]u16,
    pcchCounterListLength: ?*u32,
    mszInstanceList: ?[*]u16,
    pcchInstanceListLength: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumObjectItemsHA(
    hDataSource: isize,
    szMachineName: ?[*:0]const u8,
    szObjectName: ?[*:0]const u8,
    mszCounterList: ?[*]u8,
    pcchCounterListLength: ?*u32,
    mszInstanceList: ?[*]u8,
    pcchInstanceListLength: ?*u32,
    dwDetailLevel: PERF_DETAIL,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandWildCardPathHW(
    hDataSource: isize,
    szWildCardPath: ?[*:0]const u16,
    mszExpandedPathList: ?[*]u16,
    pcchPathListLength: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhExpandWildCardPathHA(
    hDataSource: isize,
    szWildCardPath: ?[*:0]const u8,
    mszExpandedPathList: ?[*]u8,
    pcchPathListLength: ?*u32,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDataSourceTimeRangeH(
    hDataSource: isize,
    pdwNumEntries: ?*u32,
    pInfo: ?*PDH_TIME_INFO,
    pdwBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfObjectHW(
    hDataSource: isize,
    szMachineName: ?[*:0]const u16,
    szDefaultObjectName: ?PWSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfObjectHA(
    hDataSource: isize,
    szMachineName: ?[*:0]const u8,
    szDefaultObjectName: ?PSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfCounterHW(
    hDataSource: isize,
    szMachineName: ?[*:0]const u16,
    szObjectName: ?[*:0]const u16,
    szDefaultCounterName: ?PWSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhGetDefaultPerfCounterHA(
    hDataSource: isize,
    szMachineName: ?[*:0]const u8,
    szObjectName: ?[*:0]const u8,
    szDefaultCounterName: ?PSTR,
    pcchBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBrowseCountersHW(
    pBrowseDlgData: ?*PDH_BROWSE_DLG_CONFIG_HW,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhBrowseCountersHA(
    pBrowseDlgData: ?*PDH_BROWSE_DLG_CONFIG_HA,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhVerifySQLDBW(
    szDataSource: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhVerifySQLDBA(
    szDataSource: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhCreateSQLTablesW(
    szDataSource: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhCreateSQLTablesA(
    szDataSource: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumLogSetNamesW(
    szDataSource: ?[*:0]const u16,
    mszDataSetNameList: ?[*]u16,
    pcchBufferLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "pdh" fn PdhEnumLogSetNamesA(
    szDataSource: ?[*:0]const u8,
    mszDataSetNameList: ?[*]u8,
    pcchBufferLength: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhGetLogSetGUID(
    hLog: isize,
    pGuid: ?*Guid,
    pRunId: ?*i32,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "pdh" fn PdhSetLogSetRunID(
    hLog: isize,
    RunId: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (50)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const PDH_RAW_COUNTER_ITEM_ = thismodule.PDH_RAW_COUNTER_ITEM_A;
        pub const PDH_FMT_COUNTERVALUE_ITEM_ = thismodule.PDH_FMT_COUNTERVALUE_ITEM_A;
        pub const PDH_COUNTER_PATH_ELEMENTS_ = thismodule.PDH_COUNTER_PATH_ELEMENTS_A;
        pub const PDH_DATA_ITEM_PATH_ELEMENTS_ = thismodule.PDH_DATA_ITEM_PATH_ELEMENTS_A;
        pub const PDH_COUNTER_INFO_ = thismodule.PDH_COUNTER_INFO_A;
        pub const PDH_LOG_SERVICE_QUERY_INFO_ = thismodule.PDH_LOG_SERVICE_QUERY_INFO_A;
        pub const PDH_BROWSE_DLG_CONFIG_H = thismodule.PDH_BROWSE_DLG_CONFIG_HA;
        pub const PDH_BROWSE_DLG_CONFIG_ = thismodule.PDH_BROWSE_DLG_CONFIG_A;
        pub const InstallPerfDll = thismodule.InstallPerfDllA;
        pub const LoadPerfCounterTextStrings = thismodule.LoadPerfCounterTextStringsA;
        pub const UnloadPerfCounterTextStrings = thismodule.UnloadPerfCounterTextStringsA;
        pub const UpdatePerfNameFiles = thismodule.UpdatePerfNameFilesA;
        pub const SetServiceAsTrusted = thismodule.SetServiceAsTrustedA;
        pub const PdhOpenQuery = thismodule.PdhOpenQueryA;
        pub const PdhAddCounter = thismodule.PdhAddCounterA;
        pub const PdhAddEnglishCounter = thismodule.PdhAddEnglishCounterA;
        pub const PdhValidatePathEx = thismodule.PdhValidatePathExA;
        pub const PdhGetFormattedCounterArray = thismodule.PdhGetFormattedCounterArrayA;
        pub const PdhGetRawCounterArray = thismodule.PdhGetRawCounterArrayA;
        pub const PdhGetCounterInfo = thismodule.PdhGetCounterInfoA;
        pub const PdhConnectMachine = thismodule.PdhConnectMachineA;
        pub const PdhEnumMachines = thismodule.PdhEnumMachinesA;
        pub const PdhEnumObjects = thismodule.PdhEnumObjectsA;
        pub const PdhEnumObjectItems = thismodule.PdhEnumObjectItemsA;
        pub const PdhMakeCounterPath = thismodule.PdhMakeCounterPathA;
        pub const PdhParseCounterPath = thismodule.PdhParseCounterPathA;
        pub const PdhParseInstanceName = thismodule.PdhParseInstanceNameA;
        pub const PdhValidatePath = thismodule.PdhValidatePathA;
        pub const PdhGetDefaultPerfObject = thismodule.PdhGetDefaultPerfObjectA;
        pub const PdhGetDefaultPerfCounter = thismodule.PdhGetDefaultPerfCounterA;
        pub const PdhBrowseCounters = thismodule.PdhBrowseCountersA;
        pub const PdhExpandCounterPath = thismodule.PdhExpandCounterPathA;
        pub const PdhLookupPerfNameByIndex = thismodule.PdhLookupPerfNameByIndexA;
        pub const PdhLookupPerfIndexByName = thismodule.PdhLookupPerfIndexByNameA;
        pub const PdhExpandWildCardPath = thismodule.PdhExpandWildCardPathA;
        pub const PdhOpenLog = thismodule.PdhOpenLogA;
        pub const PdhUpdateLog = thismodule.PdhUpdateLogA;
        pub const PdhSelectDataSource = thismodule.PdhSelectDataSourceA;
        pub const PdhGetDataSourceTimeRange = thismodule.PdhGetDataSourceTimeRangeA;
        pub const PdhBindInputDataSource = thismodule.PdhBindInputDataSourceA;
        pub const PdhEnumMachinesH = thismodule.PdhEnumMachinesHA;
        pub const PdhEnumObjectsH = thismodule.PdhEnumObjectsHA;
        pub const PdhEnumObjectItemsH = thismodule.PdhEnumObjectItemsHA;
        pub const PdhExpandWildCardPathH = thismodule.PdhExpandWildCardPathHA;
        pub const PdhGetDefaultPerfObjectH = thismodule.PdhGetDefaultPerfObjectHA;
        pub const PdhGetDefaultPerfCounterH = thismodule.PdhGetDefaultPerfCounterHA;
        pub const PdhBrowseCountersH = thismodule.PdhBrowseCountersHA;
        pub const PdhVerifySQLDB = thismodule.PdhVerifySQLDBA;
        pub const PdhCreateSQLTables = thismodule.PdhCreateSQLTablesA;
        pub const PdhEnumLogSetNames = thismodule.PdhEnumLogSetNamesA;
    },
    .wide => struct {
        pub const PDH_RAW_COUNTER_ITEM_ = thismodule.PDH_RAW_COUNTER_ITEM_W;
        pub const PDH_FMT_COUNTERVALUE_ITEM_ = thismodule.PDH_FMT_COUNTERVALUE_ITEM_W;
        pub const PDH_COUNTER_PATH_ELEMENTS_ = thismodule.PDH_COUNTER_PATH_ELEMENTS_W;
        pub const PDH_DATA_ITEM_PATH_ELEMENTS_ = thismodule.PDH_DATA_ITEM_PATH_ELEMENTS_W;
        pub const PDH_COUNTER_INFO_ = thismodule.PDH_COUNTER_INFO_W;
        pub const PDH_LOG_SERVICE_QUERY_INFO_ = thismodule.PDH_LOG_SERVICE_QUERY_INFO_W;
        pub const PDH_BROWSE_DLG_CONFIG_H = thismodule.PDH_BROWSE_DLG_CONFIG_HW;
        pub const PDH_BROWSE_DLG_CONFIG_ = thismodule.PDH_BROWSE_DLG_CONFIG_W;
        pub const InstallPerfDll = thismodule.InstallPerfDllW;
        pub const LoadPerfCounterTextStrings = thismodule.LoadPerfCounterTextStringsW;
        pub const UnloadPerfCounterTextStrings = thismodule.UnloadPerfCounterTextStringsW;
        pub const UpdatePerfNameFiles = thismodule.UpdatePerfNameFilesW;
        pub const SetServiceAsTrusted = thismodule.SetServiceAsTrustedW;
        pub const PdhOpenQuery = thismodule.PdhOpenQueryW;
        pub const PdhAddCounter = thismodule.PdhAddCounterW;
        pub const PdhAddEnglishCounter = thismodule.PdhAddEnglishCounterW;
        pub const PdhValidatePathEx = thismodule.PdhValidatePathExW;
        pub const PdhGetFormattedCounterArray = thismodule.PdhGetFormattedCounterArrayW;
        pub const PdhGetRawCounterArray = thismodule.PdhGetRawCounterArrayW;
        pub const PdhGetCounterInfo = thismodule.PdhGetCounterInfoW;
        pub const PdhConnectMachine = thismodule.PdhConnectMachineW;
        pub const PdhEnumMachines = thismodule.PdhEnumMachinesW;
        pub const PdhEnumObjects = thismodule.PdhEnumObjectsW;
        pub const PdhEnumObjectItems = thismodule.PdhEnumObjectItemsW;
        pub const PdhMakeCounterPath = thismodule.PdhMakeCounterPathW;
        pub const PdhParseCounterPath = thismodule.PdhParseCounterPathW;
        pub const PdhParseInstanceName = thismodule.PdhParseInstanceNameW;
        pub const PdhValidatePath = thismodule.PdhValidatePathW;
        pub const PdhGetDefaultPerfObject = thismodule.PdhGetDefaultPerfObjectW;
        pub const PdhGetDefaultPerfCounter = thismodule.PdhGetDefaultPerfCounterW;
        pub const PdhBrowseCounters = thismodule.PdhBrowseCountersW;
        pub const PdhExpandCounterPath = thismodule.PdhExpandCounterPathW;
        pub const PdhLookupPerfNameByIndex = thismodule.PdhLookupPerfNameByIndexW;
        pub const PdhLookupPerfIndexByName = thismodule.PdhLookupPerfIndexByNameW;
        pub const PdhExpandWildCardPath = thismodule.PdhExpandWildCardPathW;
        pub const PdhOpenLog = thismodule.PdhOpenLogW;
        pub const PdhUpdateLog = thismodule.PdhUpdateLogW;
        pub const PdhSelectDataSource = thismodule.PdhSelectDataSourceW;
        pub const PdhGetDataSourceTimeRange = thismodule.PdhGetDataSourceTimeRangeW;
        pub const PdhBindInputDataSource = thismodule.PdhBindInputDataSourceW;
        pub const PdhEnumMachinesH = thismodule.PdhEnumMachinesHW;
        pub const PdhEnumObjectsH = thismodule.PdhEnumObjectsHW;
        pub const PdhEnumObjectItemsH = thismodule.PdhEnumObjectItemsHW;
        pub const PdhExpandWildCardPathH = thismodule.PdhExpandWildCardPathHW;
        pub const PdhGetDefaultPerfObjectH = thismodule.PdhGetDefaultPerfObjectHW;
        pub const PdhGetDefaultPerfCounterH = thismodule.PdhGetDefaultPerfCounterHW;
        pub const PdhBrowseCountersH = thismodule.PdhBrowseCountersHW;
        pub const PdhVerifySQLDB = thismodule.PdhVerifySQLDBW;
        pub const PdhCreateSQLTables = thismodule.PdhCreateSQLTablesW;
        pub const PdhEnumLogSetNames = thismodule.PdhEnumLogSetNamesW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const PDH_RAW_COUNTER_ITEM_ = *opaque {};
        pub const PDH_FMT_COUNTERVALUE_ITEM_ = *opaque {};
        pub const PDH_COUNTER_PATH_ELEMENTS_ = *opaque {};
        pub const PDH_DATA_ITEM_PATH_ELEMENTS_ = *opaque {};
        pub const PDH_COUNTER_INFO_ = *opaque {};
        pub const PDH_LOG_SERVICE_QUERY_INFO_ = *opaque {};
        pub const PDH_BROWSE_DLG_CONFIG_H = *opaque {};
        pub const PDH_BROWSE_DLG_CONFIG_ = *opaque {};
        pub const InstallPerfDll = *opaque {};
        pub const LoadPerfCounterTextStrings = *opaque {};
        pub const UnloadPerfCounterTextStrings = *opaque {};
        pub const UpdatePerfNameFiles = *opaque {};
        pub const SetServiceAsTrusted = *opaque {};
        pub const PdhOpenQuery = *opaque {};
        pub const PdhAddCounter = *opaque {};
        pub const PdhAddEnglishCounter = *opaque {};
        pub const PdhValidatePathEx = *opaque {};
        pub const PdhGetFormattedCounterArray = *opaque {};
        pub const PdhGetRawCounterArray = *opaque {};
        pub const PdhGetCounterInfo = *opaque {};
        pub const PdhConnectMachine = *opaque {};
        pub const PdhEnumMachines = *opaque {};
        pub const PdhEnumObjects = *opaque {};
        pub const PdhEnumObjectItems = *opaque {};
        pub const PdhMakeCounterPath = *opaque {};
        pub const PdhParseCounterPath = *opaque {};
        pub const PdhParseInstanceName = *opaque {};
        pub const PdhValidatePath = *opaque {};
        pub const PdhGetDefaultPerfObject = *opaque {};
        pub const PdhGetDefaultPerfCounter = *opaque {};
        pub const PdhBrowseCounters = *opaque {};
        pub const PdhExpandCounterPath = *opaque {};
        pub const PdhLookupPerfNameByIndex = *opaque {};
        pub const PdhLookupPerfIndexByName = *opaque {};
        pub const PdhExpandWildCardPath = *opaque {};
        pub const PdhOpenLog = *opaque {};
        pub const PdhUpdateLog = *opaque {};
        pub const PdhSelectDataSource = *opaque {};
        pub const PdhGetDataSourceTimeRange = *opaque {};
        pub const PdhBindInputDataSource = *opaque {};
        pub const PdhEnumMachinesH = *opaque {};
        pub const PdhEnumObjectsH = *opaque {};
        pub const PdhEnumObjectItemsH = *opaque {};
        pub const PdhExpandWildCardPathH = *opaque {};
        pub const PdhGetDefaultPerfObjectH = *opaque {};
        pub const PdhGetDefaultPerfCounterH = *opaque {};
        pub const PdhBrowseCountersH = *opaque {};
        pub const PdhVerifySQLDB = *opaque {};
        pub const PdhCreateSQLTables = *opaque {};
        pub const PdhEnumLogSetNames = *opaque {};
    } else struct {
        pub const PDH_RAW_COUNTER_ITEM_ = @compileError("'PDH_RAW_COUNTER_ITEM_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_FMT_COUNTERVALUE_ITEM_ = @compileError("'PDH_FMT_COUNTERVALUE_ITEM_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_COUNTER_PATH_ELEMENTS_ = @compileError("'PDH_COUNTER_PATH_ELEMENTS_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_DATA_ITEM_PATH_ELEMENTS_ = @compileError("'PDH_DATA_ITEM_PATH_ELEMENTS_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_COUNTER_INFO_ = @compileError("'PDH_COUNTER_INFO_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_LOG_SERVICE_QUERY_INFO_ = @compileError("'PDH_LOG_SERVICE_QUERY_INFO_' requires that UNICODE be set to true or false in the root module");
        pub const PDH_BROWSE_DLG_CONFIG_H = @compileError("'PDH_BROWSE_DLG_CONFIG_H' requires that UNICODE be set to true or false in the root module");
        pub const PDH_BROWSE_DLG_CONFIG_ = @compileError("'PDH_BROWSE_DLG_CONFIG_' requires that UNICODE be set to true or false in the root module");
        pub const InstallPerfDll = @compileError("'InstallPerfDll' requires that UNICODE be set to true or false in the root module");
        pub const LoadPerfCounterTextStrings = @compileError("'LoadPerfCounterTextStrings' requires that UNICODE be set to true or false in the root module");
        pub const UnloadPerfCounterTextStrings = @compileError("'UnloadPerfCounterTextStrings' requires that UNICODE be set to true or false in the root module");
        pub const UpdatePerfNameFiles = @compileError("'UpdatePerfNameFiles' requires that UNICODE be set to true or false in the root module");
        pub const SetServiceAsTrusted = @compileError("'SetServiceAsTrusted' requires that UNICODE be set to true or false in the root module");
        pub const PdhOpenQuery = @compileError("'PdhOpenQuery' requires that UNICODE be set to true or false in the root module");
        pub const PdhAddCounter = @compileError("'PdhAddCounter' requires that UNICODE be set to true or false in the root module");
        pub const PdhAddEnglishCounter = @compileError("'PdhAddEnglishCounter' requires that UNICODE be set to true or false in the root module");
        pub const PdhValidatePathEx = @compileError("'PdhValidatePathEx' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetFormattedCounterArray = @compileError("'PdhGetFormattedCounterArray' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetRawCounterArray = @compileError("'PdhGetRawCounterArray' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetCounterInfo = @compileError("'PdhGetCounterInfo' requires that UNICODE be set to true or false in the root module");
        pub const PdhConnectMachine = @compileError("'PdhConnectMachine' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumMachines = @compileError("'PdhEnumMachines' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumObjects = @compileError("'PdhEnumObjects' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumObjectItems = @compileError("'PdhEnumObjectItems' requires that UNICODE be set to true or false in the root module");
        pub const PdhMakeCounterPath = @compileError("'PdhMakeCounterPath' requires that UNICODE be set to true or false in the root module");
        pub const PdhParseCounterPath = @compileError("'PdhParseCounterPath' requires that UNICODE be set to true or false in the root module");
        pub const PdhParseInstanceName = @compileError("'PdhParseInstanceName' requires that UNICODE be set to true or false in the root module");
        pub const PdhValidatePath = @compileError("'PdhValidatePath' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetDefaultPerfObject = @compileError("'PdhGetDefaultPerfObject' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetDefaultPerfCounter = @compileError("'PdhGetDefaultPerfCounter' requires that UNICODE be set to true or false in the root module");
        pub const PdhBrowseCounters = @compileError("'PdhBrowseCounters' requires that UNICODE be set to true or false in the root module");
        pub const PdhExpandCounterPath = @compileError("'PdhExpandCounterPath' requires that UNICODE be set to true or false in the root module");
        pub const PdhLookupPerfNameByIndex = @compileError("'PdhLookupPerfNameByIndex' requires that UNICODE be set to true or false in the root module");
        pub const PdhLookupPerfIndexByName = @compileError("'PdhLookupPerfIndexByName' requires that UNICODE be set to true or false in the root module");
        pub const PdhExpandWildCardPath = @compileError("'PdhExpandWildCardPath' requires that UNICODE be set to true or false in the root module");
        pub const PdhOpenLog = @compileError("'PdhOpenLog' requires that UNICODE be set to true or false in the root module");
        pub const PdhUpdateLog = @compileError("'PdhUpdateLog' requires that UNICODE be set to true or false in the root module");
        pub const PdhSelectDataSource = @compileError("'PdhSelectDataSource' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetDataSourceTimeRange = @compileError("'PdhGetDataSourceTimeRange' requires that UNICODE be set to true or false in the root module");
        pub const PdhBindInputDataSource = @compileError("'PdhBindInputDataSource' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumMachinesH = @compileError("'PdhEnumMachinesH' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumObjectsH = @compileError("'PdhEnumObjectsH' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumObjectItemsH = @compileError("'PdhEnumObjectItemsH' requires that UNICODE be set to true or false in the root module");
        pub const PdhExpandWildCardPathH = @compileError("'PdhExpandWildCardPathH' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetDefaultPerfObjectH = @compileError("'PdhGetDefaultPerfObjectH' requires that UNICODE be set to true or false in the root module");
        pub const PdhGetDefaultPerfCounterH = @compileError("'PdhGetDefaultPerfCounterH' requires that UNICODE be set to true or false in the root module");
        pub const PdhBrowseCountersH = @compileError("'PdhBrowseCountersH' requires that UNICODE be set to true or false in the root module");
        pub const PdhVerifySQLDB = @compileError("'PdhVerifySQLDB' requires that UNICODE be set to true or false in the root module");
        pub const PdhCreateSQLTables = @compileError("'PdhCreateSQLTables' requires that UNICODE be set to true or false in the root module");
        pub const PdhEnumLogSetNames = @compileError("'PdhEnumLogSetNames' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (17)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const BSTR = @import("../foundation.zig").BSTR;
const FILETIME = @import("../foundation.zig").FILETIME;
const HANDLE = @import("../foundation.zig").HANDLE;
const HRESULT = @import("../foundation.zig").HRESULT;
const HWND = @import("../foundation.zig").HWND;
const IDispatch = @import("../system/com.zig").IDispatch;
const IFontDisp = @import("../system/ole.zig").IFontDisp;
const IUnknown = @import("../system/com.zig").IUnknown;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const SAFEARRAY = @import("../system/com.zig").SAFEARRAY;
const SYSTEMTIME = @import("../foundation.zig").SYSTEMTIME;
const VARIANT = @import("../system/com.zig").VARIANT;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "PLA_CABEXTRACT_CALLBACK")) {
        _ = PLA_CABEXTRACT_CALLBACK;
    }
    if (@hasDecl(@This(), "PERFLIBREQUEST")) {
        _ = PERFLIBREQUEST;
    }
    if (@hasDecl(@This(), "PERF_MEM_ALLOC")) {
        _ = PERF_MEM_ALLOC;
    }
    if (@hasDecl(@This(), "PERF_MEM_FREE")) {
        _ = PERF_MEM_FREE;
    }
    if (@hasDecl(@This(), "PM_OPEN_PROC")) {
        _ = PM_OPEN_PROC;
    }
    if (@hasDecl(@This(), "PM_COLLECT_PROC")) {
        _ = PM_COLLECT_PROC;
    }
    if (@hasDecl(@This(), "PM_CLOSE_PROC")) {
        _ = PM_CLOSE_PROC;
    }
    if (@hasDecl(@This(), "CounterPathCallBack")) {
        _ = CounterPathCallBack;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
//--------------------------------------------------------------------------------
// Section: SubModules (1)
//--------------------------------------------------------------------------------
pub const hardware_counter_profiling = @import("performance/hardware_counter_profiling.zig");
